有没有一种方法可以使用 Flash 消息从组件重定向到不同的控制器(而不是调用该组件的控制器)?就像是:
namespace App\Controller\Component;
use Cake\Controller\Component;
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 上没有值(非空),我想检查错误是否是由索引方法调用的,如果是,则将用户发送到带有闪存消息的主页(HomeController)。在另一种情况下,只需将用户发送到捕获错误的控制器的索引并显示闪存消息。
上面的代码允许我显示 Flash 或重定向,但我不能同时执行这两个操作。
蝴蝶不菲