我正在尝试如下路线:
/account/
account_id
,则用户已登录;显示他的帐户信息/account/
create
,则用户想要创建帐户;创造它/account/
我的路线是这样设定的:
Route::get('account', function() {
if (Session::has('account_id'))
return 'AccountsController@show';
else
return 'AccountsController@index';
});
Route::post('account', function() {
if (Input::has('create')) {
return 'AccountsController@create';
else
return 'AccountsController@login';
)};
这与我对Rails的处理方式有些不同,但我不知道如何指向控制器方法。我只是得到了返回的字符串。我没有在Laravel文档中找到它(我发现它很差,或者我搜索错了?)在任何其他网络教程中都没有。
答案 0 :(得分:9)
尝试以下方法:
Route::get('account', function() {
if (Session::has('account_id')) {
$action = 'show';
return App::make('AccountsController')->$action();
}
else {
$action = 'index';
return App::make('AccountsController')->$action();
}
});
Route::post('account', function() {
if (Input::has('create')) {
$action = 'create';
return App::make('AccountsController')->$action();
}
else {
$action = 'login';
return App::make('AccountsController')->$action();
}
)};
答案 1 :(得分:0)
因此,您希望将所有逻辑放在控制器中。
你想做
Route::get('account', 'AccountsController@someFunction');
Route::get('account', 'AccountsController@anotherFunction');
然后,在相应的控制器中,您可以进行测试,然后进行测试,例如,
if (Session::has('account_id')){
return Redirect::action('AccountsController@show');
}
else{
return Redirect::action('AccountsController@index');
}
但是,请确保为每个操作定义路由,以便您的应用程序可以检测到URL 例如,如果您想要
Redirect::action('AccountsController@show')
您需要定义此操作,如:
Route::get('/account/show', 'AccountsController@show')