在字符串上调用成员函数 redirect() - Yii2 v2.0.36
Call to a member function redirect() on string - Yii2 v2.0.36
当我尝试从控制器的 init() 函数重定向到 url 时,我收到此消息 Call to a member function redirect() on string。
public function init()
{
$someCondition = myBoolFunction();
if ($someCondition) {
return $this->redirect('my/url'));
}
parent::init();
}
您需要在 parent::init()
之后调用 $this->redirect()
,因为 $response
属性(由 $this->redirect()
使用) 是 initialized there.
public function init() {
parent::init();
$someCondition = myBoolFunction();
if ($someCondition) {
return $this->redirect('my/url'));
}
}
但总的来说 init()
不是做这种重定向的好地方(它甚至可能不会工作,因为 init()
不应该 return 任何东西,所以你的重定向可能会被忽略),您应该使用 beforeAction()
代替。 ,只需将 asJson()
替换为您的重定向:
public function beforeAction() {
parent::init();
$someCondition = myBoolFunction();
if ($someCondition) {
$this->redirect('my/url'));
return false;
}
return parent::beforeAction();
}
当我尝试从控制器的 init() 函数重定向到 url 时,我收到此消息 Call to a member function redirect() on string。
public function init()
{
$someCondition = myBoolFunction();
if ($someCondition) {
return $this->redirect('my/url'));
}
parent::init();
}
您需要在 parent::init()
之后调用 $this->redirect()
,因为 $response
属性(由 $this->redirect()
使用) 是 initialized there.
public function init() {
parent::init();
$someCondition = myBoolFunction();
if ($someCondition) {
return $this->redirect('my/url'));
}
}
但总的来说 init()
不是做这种重定向的好地方(它甚至可能不会工作,因为 init()
不应该 return 任何东西,所以你的重定向可能会被忽略),您应该使用 beforeAction()
代替。 asJson()
替换为您的重定向:
public function beforeAction() {
parent::init();
$someCondition = myBoolFunction();
if ($someCondition) {
$this->redirect('my/url'));
return false;
}
return parent::beforeAction();
}