我正在尝试使用过滤器来检查用户是否是访客...如果是这样,请使用控制器中的方法....如果我正确行事,请告诉我...我一直在错误call_user_func_array() expects parameter 1 to be a valid callback, no array or string given
所以路线:
Route::get('/', ['before' => 'checkUserFilter'], function()
{
return View::make('home');
});
过滤器:
Route::filter('checkUserFilter', function()
{
if (Auth::guest())
{
Route::get('/', 'User@createUser');
}
});
控制器
public function createUser($username)
{
$username = 'test-'.str_random(4);
$newUser = new User;
if ($username == null) {
$newUser->username = 'user-'.str_random(4);
} else {
$newUser->username = $username;
}
$newUser->password = str_random(8); // ignore this line.....
$newUser->save();
Auth::login($newUser);
}
答案 0 :(得分:2)
您必须重定向,在这种情况下,您可以使用action()
,并且还需要在过滤器之外为该操作创建路线,因此,这可能是您的代码:
Route::filter('checkUserFilter', function()
{
if (Auth::guest())
{
return Redirect::action('User@createUser');
}
});
Route::get('/createUser', 'User@createUser');
修改强>
为什么你需要创建/createUser
路线?
因为Redirect基本上会查找指向该操作的路由并重定向到与路由相关的URI。因此,重定向会将您的浏览器发送到http://app.com/createUser。
如果您不创建此路线,重定向将引发NotFoundHttpException
。