Laravel 4路由到控制器方法

时间:2014-01-13 23:48:57

标签: php laravel laravel-4

我正在尝试如下路线:

  • 如果用户获取/account/
    • 如果会话有account_id,则用户已登录;显示他的帐户信息
    • 如果没有,用户未登录; show login / create form
  • 如果用户发帖/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文档中找到它(我发现它很差,或者我搜索错了?)在任何其他网络教程中都没有。

2 个答案:

答案 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')