[英]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.