我知道如何在l4中使用filter
但是我只是想知道为什么这段代码不起作用。
class CustomController extends BaseController
{
public function __construct()
{
if(!Session::has('certain_id'))
return 'You are not allowed here';
}
public function getAdd()
{
return 'You can add here and im sure you have that "certain_id"';
}
}
在我的routes.php中:
Route::controller('custom','CustomController');
我非常确定certain_id
未在会话中定义,但它始终一直持续到getAdd
方法。我也尝试删除if
语句但结果相同。
答案 0 :(得分:0)
问题是php __construct()方法没有返回值(参见 void ):
void __construct ([ mixed $args [, $... ]] )
这意味着你的return '...'
被忽略了,所以当你调用getAdd()
方法时,你说的是__construct()被调用(创建了一个新的类实例),但随后处理继续进行。
我不知道你想要实现什么,但是如果它是一些登录过滤你可以做
public function __construct()
{
if(!Session::has('certain_id'))
Response::redirect('login');
}
因此,当certain_id
不存在时,您将重定向到之外的另一个类。注意不要重定向到相同的类,否则你将冒无限循环的风险(类是实例化的,sesssion不存在,你被重定向到一个方法:创建一个新的实例,id仍然不存在,所以你再次被重定向,等等)