我有一个准备好的accesscontrol插件来检查对资源和动作的访问,所以当我在插件中设置flash消息,然后重定向到登录页面时,消息不显示。
我在访问控制插件行:
if(!$role || !$moduleAcl || !$moduleAcl->isAllowed($role,$controller,$action)){
$this->flash->warning('Nemáte oprávnění na provedení této akce.');
if(!$moduleAcl->isAllowed($role, 'index', 'index')){
$auth = 'Core'Auth::logout();
}
else {
return $this->response->redirect($module.'/');
}
}
在基本控制器中有一行:
if(!$identity)
{
return $this->response->redirect('manager/auth/');
}
谁能告诉我我做错了什么?
在控制器中输入
$this->view->disable();
之前$this->redirect();
会有帮助的。
我做了一个解决方案:
<?php
namespace Core'Http;
/**
* Description of Response
*
* @author softdream
*/
class Response extends 'Phalcon'Http'Response {
//put your code here
public function redirect($locationPath = null, $baseUrl = null, $statusCode = null) {
if($statusCode){
$this->setStatusHeader($code);
}
if(substr($locationPath, 0,1) === '/'){
$locationPath = substr($locationPath, 1);
}
header("Location: ".$baseUrl.'/'.$locationPath);
exit;
}
protected function setStatusHeader($code){
header("HTTP/1.0 ".$code);
}
}
这将解决重定向后显示flash消息的所有问题,问题是phalcon在重定向时不会停止脚本,所以它可以在重定向之前呈现一些数据。
我认为禁用视图不是一个好的和清洁的解决方案,如何做到这一点:)