2014-10-19 01:48:45 10293次浏览 1条回答 0 悬赏 0 金钱

正在学习用yii开发,发现yii::app()是一个不错的东西,可以用它来返回CWebApplication的模块来直接调用当前的module. 例如Yii::app()->db, ->user, ->log. 我现在有几个问题,希望有经验的高手能来解答:
1: 在TbAactiveForm中的inputRow方法有这样一个函数:

Yii::app()->controller->widget(
    $this->getInputClassName(),
    array(
        'type' => $type,
        'form' => $this,
        'model' => $model,
        'attribute' => $attribute,
        'data' => $data,
        'htmlOptions' => $htmlOptions,
    )
);

1:此方法返回的值显示在生成的表单中,我不理解的是Yii::app()->controller 这里返回的是LoginController,这个controller是在什么时候加载的LoginController, 为什么会加载LoginController,我的理解是从config.php中的component选项吗?我希望有人能从框架的底层代码的角度帮我解答一下,比如它调用了那些框架的类,触发了那些函数。 谢谢。

// application components
'components'=>array(
    'user'=>array(
        'allowAutoLogin'=>true,
    ),
    'db'=>require(dirname(__FILE__).'/database.php'),
    'errorHandler'=>array(
        // use 'site/error' action to display errors
        'errorAction'=>'site/error',
    ),
    'log'=>array(
        'class'=>'CLogRouter',
        'routes'=>array(
            array(
                'class'=>'CFileLogRoute',
                'levels'=>'error, warning',
            ),
        ),
    ),
),
补充于 2014-10-19 02:30

自己又研究了一下代码,发现Yii::app()->controller会生成相应模块的application.比如在login的模块里 就返回loginControoler, 在其他的比如User的模块里 就会生成相应的user的adminController。现在想问谁明白Yii::app()->controller中的->controller是调用的哪里的controller变量? 是从CWebApplication吗?

  • 回答于 2014-10-20 11:04 举报

    controller 是CApplication的一个属性而已 返回当前的控制器 是CController实例 有啥好纠结的?

您需要登录后才可以回答。登录 | 立即注册
chrisgong
实习生

chrisgong

注册时间:2014-10-19
最后登录:2014-10-21
在线时长:1小时6分
  • 粉丝0
  • 金钱5
  • 威望0
  • 积分15

热门问题