【问题标题】:Controller Method not found in nesting laravel 4在嵌套 laravel 4 中找不到控制器方法
【发布时间】:2014-11-10 09:40:03
【问题描述】:

我是 laravel 的新手,遇到了一个错误,不知道如何解决。 当我询问这条路线时,出现错误“找不到控制器方法”:/projet/6/note

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

那么我想如果我的 NoteController 不是资源,我就不能做“projet/note”? 这是一个问题,因为我需要将 NoteController 嵌套到 ProjetController。

我在 NoteController 中的唯一操作

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

谢谢

【问题讨论】:

  • 您是否打算在 NoteController 中添加更多的操作?如果没有,您可以添加一条直接指向该操作的路线
  • 是的,我将在控制器中执行更多操作

标签: php laravel laravel-4 frameworks


【解决方案1】:

我希望我正确理解了您的问题。这是我能想到的最佳解决方案:

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

【讨论】:

    猜你喜欢
    • 2016-04-04
    • 2014-03-09
    • 2014-05-12
    • 1970-01-01
    • 1970-01-01
    • 2014-03-18
    • 2013-05-25
    • 2021-10-24
    相关资源
    最近更新 更多