簡體   English   中英

laravel route.php更多的控制器動作方法

[英]laravel route.php more controller actions methods

我有3條路線:

Route::get('{project}', 'ProjectController@showProject')
->where('project', '[A-Za-z0-9-]+');            

Route::get('{project}/{module}', 'ProjectController@showModule')
->where('module', '[A-Za-z0-9-]+');

Route::get('{project}/{module}/{submodule}/{resources}',   'ProjectController@showGraphsResources')
->where(array('submodule' => '[A-Za-z0-9-]+','resource', '[A-Za-z0-9-]+'));

projectController唯一的功能是不同的

如何只用一條路線進行不同的操作?

像這樣...(不正確)

Route::get('{project}/{module}/{submodule}/{resources}', 'ProjectController@showProject' 'ProjectController@showModule','ProjectController@showGraphsResources',)
->where(array('submodule' => '[A-Za-z0-9-]+','resource', '[A-Za-z0-9-]+'));

我認為:

Route::get('{project}/{module}/{submodule}/{resources}', 'ProjectController@showGraphsResources')->where(array('submodule' => '[A-Za-z0-9-]+','resource', '[A-Za-z0-9-]+'));

Route::get('{project}/{module}', 'ProjectController@showModule')->where('module', '[A-Za-z0-9-]+');

Route::get('{project}', 'ProjectController@showProject')->where('project', '[A-Za-z0-9-]+');

應該管用。

使用一條路由執行多個操作(IMO)似乎是一個壞主意,但是...您可以嘗試執行以下操作:

Route::get(
    '{project}/{module?}/{submodule?}/{resources?}',
    function($project, $module = null, submodule = null, $resources = null) {
        if(!is_null($project)) {
            $pc = App::make('ProjectController');
            if(is_null($module)) return $pc->showProject($project);
            else {
                if(is_null($submodule)) return $pc->showModule($project, $module);
                else {
                    if(!is_null($resources)) return $pc->showGraphsResources($project, $module, $submodule, $resources);
                }
            }
        }
    }
);

現在在您的ProjectController創建如下三個方法:

class ProjectController extends BaseController {

    public function showProject($project)
    {
        //...
    }

    public function showModule($project, $module)
    {
        //...
    }

    public function showGraphsResources($project, $module, $submodule, $resources)
    {
        //...
    }
}

或者,您可以僅使用一個missingMethod來捕獲控制器中的所有方法,例如:

class ProjectController extends BaseController {

    public function missingMethod($args = array())
    {
        // Now check the $args passed,
        // depending on the $args you
        // may take an action, try dd($args)
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM