重定向至另一个带有Flash消息的控制器-Cakephp3



有一种方法可以通过Flash消息将组件重定向到另一个控制器(而不是调用该组件的控制器(吗?类似于:

namespace AppControllerComponent;
use CakeControllerComponent;
class ValidateValueComponent extends Component
{
public function validateValue($var = null){
try{
if(!$var){
throw new Exception();
}
} catch(Exception $e){
$action = $this->request->params['action'] === 'index' ? 'home' : $this->request->params['action'];
$controller = $action === 'home' ? 'Home' : $this->request->params['controller'];
$this->_registry->getController()->Flash->error(__('Message!'));
// $this->_registry->getController()->redirect(['controller' => $controller, 'action' => $action]);
}
}
}

我想验证一些值,并避免它破坏执行。如果$var上没有值(不是空的(,我想检查该错误是否由index方法调用,如果是,则将用户发送到主页(HomeController(并显示flash消息。在另一种情况下,只需将用户从捕捉到错误的控制器发送到索引,并显示闪烁消息。

上面的代码允许我显示Flash或重定向,但我不能同时执行这两项操作。

不管怎样,

谢谢大家!

实际上,我使用bookstack.cn中的这个链接解决了问题,但总体而言,我需要调用$components数组上的Flash组件,然后正常使用它,这与调用该组件的控制器无关。类似于:

namespace AppControllerComponent;
use CakeControllerComponent;
class ValidateValueComponent extends Component
{
public $components = ['Flash'];
public function validateValue($var = null){
try{
if(!$var){
throw new Exception();
}
} catch(Exception $e){
$action = $this->request->params['action'] === 'index' ? 'home' : $this->request->params['action'];
$controller = $action === 'home' ? 'Home' : $this->request->params['controller'];
$this->Flash->set(__('Message!'));
return $this->_registry->getController()->redirect(['controller' => $controller, 'action' => $action]);
}
}
}

最新更新