在嵌套层4中找不到控制器方法

时间:2014-11-10 09:40:04

标签: php laravel laravel-4 frameworks

我是laravel的新手,我收到了一个错误,并不知道如何解决它。 当我要求这条路线时,我收到错误“未找到控制器方法”:/ projet / 6 / note

我的routes.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 artisan路线以查看路线是否正常工作,但事实并非如此。 我尝试将控制器更改为关于NoteController的行中的资源,路由在那里但是当我继续链接时,同样的错误。

然后我想我不能做'projet / note'而没有我的NoteController是一个资源? 这是一个问题,因为我需要将NoteController嵌套到ProjetController。

我在NoteController中的唯一操作

public function getIndex($id)
{
    return View::make('note.noter')
        ->with('project', Project::find($id))
    ;
}

由于

1 个答案:

答案 0 :(得分:0)

我希望我理解你的问题。这是我能提出的最佳解决方案:

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类似。首先,我们创建一个控制器实例,然后从请求方法和路由中的第二个参数构建操作名称,最后调用操作(如果存在)。