我是laravel的新手,我遇到了一个错误,真的不知道如何修复它。当我询问这条路线时,我得到了一个错误"找不到控制器方法":/projet/6/注意
我的路线.php
Route::controller('projet.note', 'NoteController');
Route::resource('/eleves', 'StudentController');
Route::controller('/auth', 'AuthController');
Route::resource('/user', 'UserController');
Route::resource('/projet', 'ProjectController');
Route::post('/eleves/search', 'StudentController@postSearch');
Route::resource('/classe', 'ClasseController');
Route::controller('/', 'HomeController');
我试着键入php手工路线,看看这些路线是否有效,但她没有。然后,我试图在关于NoteController的一行中将控制器更改为资源,路由在那里,但当我访问链接时,出现了同样的错误。
那么我想如果没有我的NoteController是一个资源,我就不能做"projet/note"?这是一个问题,因为我需要将NoteController嵌套到ProjetController。
我在NoteController 中的唯一操作
public function getIndex($id)
{
return View::make('note.noter')
->with('project', Project::find($id))
;
}
感谢
我希望我能正确理解你的问题。这是我能想到的最好的解决方案:
Route::any('projet/{id}/note/{action?}', function($id, $action = 'index'){
$controller = App::make('NoteController');
$action = strtolower($_SERVER['REQUEST_METHOD']).studly_case($action);
if(method_exists($controller, $action)){
return $controller->callAction($action, [$id]);
}
});
这基本上做了一些与Route::controller
类似的事情。首先,我们创建一个控制器实例,然后根据请求方法和路由中的第二个参数构建动作名称,最后,调用该动作(如果存在)。