Reputation: 15736
I am writing a webapp using CodeIgniter that requires authentication. I created a model which handles all my authentication. However, I can't find a way to access this authentication model from inside another model. Is there a way to access a model from inside another mode, or a better way to handle authentication inside CodeIgniter?
Upvotes: 20
Views: 21578
Reputation: 2771
Loading a model within a model is now possible with the new CodeIgniter.
Upvotes: 1
Reputation: 18197
It seems you can load models inside models, although you probably should solve this another way. See CodeIgniter forums for a discussion.
class SomeModel extends Model
{
function doSomething($foo)
{
$CI =& get_instance();
$CI->load->model('SomeOtherModel','NiceName',true);
// use $CI instead of $this to query the other models
$CI->NiceName->doSomethingElse();
}
}
Also, I don't understand what Till is saying about that you shouldn't create objects inside objects. Of course you should! Sending objects as arguments looks much less clear to me.
Upvotes: 18
Reputation:
Don't handle authentication in your model. Only use models to interface with your database, or ldap or whatever.
I created an Auth library that I use to manage authentication and authorization. You can access a library like this from your controllers.
Upvotes: 1
Reputation: 22406
In general, you don't want to create objects inside an object. That's a bad habit, instead, write a clear API and inject a model into your model.
<?php
// in your controller
$model1 = new Model1();
$model2 = new Model2();
$model2->setWhatever($model1);
?>
Upvotes: 14