20

我正在使用需要身份验证的 CodeIgniter 编写一个 webapp。我创建了一个模型来处理我的所有身份验证。但是,我找不到从另一个模型内部访问此身份验证模型的方法。有没有办法从另一种模式中访问模型,或者有更好的方法在 CodeIgniter 中处理身份验证?

4

4 回答 4

18

似乎您可以在模型中加载模型,尽管您可能应该以另一种方式解决这个问题。请参阅CodeIgniter 论坛进行讨论。

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();
  }
}

另外,我不明白 Till 所说的你不应该在对象内部创建对象。你当然应该!将对象作为参数发送对我来说似乎不太清楚。

于 2008-09-16T17:55:48.720 回答
14

通常,您不想在对象内部创建对象。这是一个坏习惯,相反,编写一个清晰的 API 并将模型注入到你的模型中。

<?php
// in your controller
$model1 = new Model1();
$model2 = new Model2();
$model2->setWhatever($model1);
?>
于 2008-09-05T17:26:45.090 回答
1

不要在模型中处理身份验证。仅使用模型与您的数据库或 ldap 或其他接口进行交互。

我创建了一个 Auth 库,用于管理身份验证和授权。您可以从控制器访问这样的库。

于 2008-09-16T17:44:14.707 回答
1

现在可以使用新的 CodeIgniter 在模型中加载模型。

于 2013-07-18T21:24:06.613 回答