我想从控制器调用另一个控制器中的函数.
class FirstController extends Controller {
public function test1() { return 'OK'; }
}
class SecondController extends Controller {
public function callTest1() { First::test1(); }
}
Run Code Online (Sandbox Code Playgroud)
- >服务器错误
帮我解决它.
你不能直接调用那个方法,因为它不是static,所以你必须先创建一个实例FirstController.如果您想这样做,请使用CWebApplication::createController:
// supply appropriate route in place of 'first/index'
list($first) = Yii::app()->createController('first/index');
$first->test1();
Run Code Online (Sandbox Code Playgroud)
但是,不需要从另一个控制器调用方法; 这是一个糟糕的代码味道.也许更合适的做法是重构代码并将其从控制器中拉出来(可能是模型).