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

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

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

public function methodB() {
    return Input::get('n')*20;
}  

我想根据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
    }
});

我怎样才能做到这一点 ?

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

Route::post('/flag', 'MyController@methodA');
Route::post('/', 'MyController@methodB);

编辑:

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

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());
    }
});

Source

要么

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

Source

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

转载注明原文:php – Laravel 4:将发布请求重定向到不同的控制器方法 - 代码日志