(Phalcon) 如何从模型中的静态方法重定向 (Phalcon\Http\Response)
(Phalcon) How to redirect (Phalcon\Http\Response) from static method in model
我正在尝试创建一个可重用的静态函数,如果为真则重定向。
此功能将在模型中。
public function checkEmtpy(ResultsetInterface $resultset)
{
$di = \Phalcon\DI::getDefault();
if (empty($resultset->toArray())) {
$di->get('flash')->error('Page not found.');
return $di->get('response')->redirect('content');
} else {
return false;
}
}
我尝试了几种重定向方式,但无法从模型中重定向。
我可以做些什么来使这项工作有效,或者这根本不可能?
在模型中进行重定向是违反 MVC 原则的。重定向必须在控制器中完成。您应该做的只是 return 仅来自您的模型的状态。像这样:
// Model
public function checkEmtpy(ResultsetInterface $resultset)
{
return empty($resultset->toArray());
}
// Controller
public action someAction()
{
$isEmpty = (new YourModelName)->checkEmtpy($someVariable);
if ($isEmpty === true) {
return $this->response->redirect(...);
}
}
我正在尝试创建一个可重用的静态函数,如果为真则重定向。 此功能将在模型中。
public function checkEmtpy(ResultsetInterface $resultset)
{
$di = \Phalcon\DI::getDefault();
if (empty($resultset->toArray())) {
$di->get('flash')->error('Page not found.');
return $di->get('response')->redirect('content');
} else {
return false;
}
}
我尝试了几种重定向方式,但无法从模型中重定向。
我可以做些什么来使这项工作有效,或者这根本不可能?
在模型中进行重定向是违反 MVC 原则的。重定向必须在控制器中完成。您应该做的只是 return 仅来自您的模型的状态。像这样:
// Model
public function checkEmtpy(ResultsetInterface $resultset)
{
return empty($resultset->toArray());
}
// Controller
public action someAction()
{
$isEmpty = (new YourModelName)->checkEmtpy($someVariable);
if ($isEmpty === true) {
return $this->response->redirect(...);
}
}