我正在尝试在重定向后创建会话闪光消息。
我有Controller类
class Controller
{
function __construct()
{
if(!empty($_SESSION['FLASH']))
foreach($_SESSION['FLASH'] as $key => $val)
$this->$key = $val;
}
function __destruct()
{
$_SESSION['FLASH']=null;
}
}
我还有一个控制器子类Home,其中的函数是按路由运行的,比如/Home/Index公共函数=> ()
class Home extends Controller
{
function __construct()
{
parent::__construct();
}
public function index()
{
//where i want to display $this->message only once
echo $this->message; // but $this->message is undefinded why?
}
public function Post_register(){
//after post form data
// validation
// this function redirect to /Home/Index above function index();
Uri::redirectToAction("Home","Index",array('message' => 'some message'));
}
}
和uri类函数,其中我重定向用户。
public static function redirectToAction($controller,$method,$arr)
{
$_SESSION['FLASH'] = $arr;
header("Location:/".$controller.'/'.$method);
}
但是为什么$this->message
是不确定的?
发布于 2013-09-12 02:13:11
在您提供的代码中,$message
从未定义为Controller
类或其派生类Home
的成员。如果你想使用这个成员变量,你必须将它声明为类的成员,比如public $message
,然后在执行的时候设置它,大概是在你的Uri::redirectToAction
函数中。
发布于 2015-05-28 21:15:15
我专门为这种类型的项目编写了一个库https://github.com/tamtamchik/simple-flash。
一旦你安装了它,你就可以做到这一点。
在你的redirectToAction
中
public static function redirectToAction($controller,$method,$arr)
{
flash($arr['message']);
header("Location:/".$controller.'/'.$method);
}
在index
中
public function index()
{
echo flash()->display();
}
它将生成Bootstrap友好的警报消息。
https://stackoverflow.com/questions/18748240
复制相似问题