3

グリッド ビューがあり、別のアクション コントローラーから列の値を取得したいと考えています。今、私はこれをコントローラー1に持っています

   array(
        'name'=>'title',
        'value'=>array($this,'Action2'),
    ),

そして、私はこのエラーを受け取ります:

controller1 and its behaviors do not have a method or closure named "Action2".

$this を「controller2」に置き換えると

   array(
        'name'=>'title',
        'value'=>array('controller2','Action2'),
    ),

このエラーが発生します

call_user_func_array() [<a href='function.call-user-func-array'>function.call-user-func-array</a>]: First argument is expected to be a valid callback, 'controller2::action2' was given

多分これは悪い習慣ですが、これは実行可能ですか?

4

2 に答える 2

5

このようにコントローラーのアクションを使用するのは悪い習慣です。コードをモデルのメソッドに配置することをお勧めします。それでもやりたい場合は、次の方法があります。

'value' => function() {
    list($controller) = Yii::app()->createController('controllerId');
    return $controller->actionTest();
}

ここに別のものがあります:

'value' => function() {
    $controller = new TestController('test');
    return $controller->actionTest();
}
于 2012-04-25T23:07:50.473 に答える
5

このソリューションを使用できます:

Yii::app()->runController('category/view/id/1');
于 2015-02-08T04:55:13.913 に答える