Laravel 4:将发布请求重定向到不同的控制器方法

pal*_*tok 6 php laravel-4 laravel-routing

我有一个像下面的控制器,
MyController:

public function methodA() {
    return Input::get('n')*10;
}  

public function methodB() {
    return Input::get('n')*20;
}  
Run Code Online (Sandbox Code Playgroud)

我想根据POST值调用MyController中的方法.

routes.php文件

Route::post('/', function(){
    $flag = Input::get('flag');
    if($flag == 1) {
        //execute methodA and return the value
    } else {
        //execute methodB and return the value
    }
});
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点 ?

php*_*_qq 6

我认为更清洁的解决方案是根据您的标志将您的发布请求发送到不同的URL,并为每个URL提供不同的路由,这些映射到您的控制器方法

Route::post('/flag', 'MyController@methodA');
Route::post('/', 'MyController@methodB);
Run Code Online (Sandbox Code Playgroud)

编辑:

要按照您的方式执行操作,您可以使用此代码段

Route:post('/', function(){
    $app = app();
    $controller = $app->make('MyController');
    $flag = Input::get('flag');
    if($flag == 1) {
        return $controller->callAction('methodA', $parameters = array());
    } else {
        return $controller->callAction('methodB', $parameters = array());
    }
});
Run Code Online (Sandbox Code Playgroud)

资源

要么

Route:post('/', function(){
    $flag = Input::get('flag');
    if($flag == 1) {
        App::make('MyController')->methodA();
    } else {
        App::make('MyController')->methodB();
    }
});
Run Code Online (Sandbox Code Playgroud)

资源

而且需要注意的是 - 我对Laravel的实践经验绝对没有,我只是搜索并发现了这一点.