您正在寻找未找到laravel 5.5的页面

时间:2018-03-18 14:56:31

标签: laravel routes

我正在接受

  

抱歉,找不到您要查找的页面。

在Laravel 5.5上。我确信我错过了很小的东西。但不确定它是什么,因为我是一个学习者。请参阅以下内容:

ROUTE

 Auth::routes();
Route::get('/curriculum-sections','CurriculumsectionsController@index')->name('curriculum-sections');
Route::resource('/curriculum-sections','CurriculumsectionsController');

CONTROLLER

public function show(Curriculumsection $curriculumsection)
{
    //
    $curriculum = Curriculum::findOrFail($curriculumsection->id);
    return view('curriculum-sections.show', ['curriculum'=>$curriculum]);
}

我还确保该页面存在于views文件夹中。在排查问题时,我也做了php artisan route:list,这就是我得到的enter image description here

编辑: 我正在访问错误:

  

http://localhost:8000/curriculum-sections/1

2 个答案:

答案 0 :(得分:1)

问题是您的路线为模型id定义了Curriculumsection。您正在使用模型绑定,它将自动查询Curriculumsection::findOrFail(route_id)(在您的情况下,route_id为1)。然后,您使用相同的id来查询模型Curriculum,并使用->findOrFail(route_id)

因此,为了使此路由返回除404之外的任何内容,您必须在数据库中记录Curriculumsection的id为1且记录为Curriculum且ID为1。

我不确定您的数据库是如何设置的,或者这两个模型是如何相互关联的,但绝对不是相同的id(否则,为什么不将所有数据放在同一个表中)。

这样的事情会更有意义(直接绑定Curriculum模型):

public function show(Curriculum $curriculum)
{
    return view('curriculum-sections.show', ['curriculum'=>$curriculum]);
}

这会将Curriculum模型绑定到路由,并自动获取传入id的模型。

或者类似于您的用例,但它假设您在curriculum()模型上有一个名为Curriculumsection的工作关系:

public function show(Curriculumsection $curriculumsection)
{
    $curriculum = $curriculumsection->curriculum;
    return view('curriculum-sections.show', ['curriculum'=>$curriculum]);
}

答案 1 :(得分:0)

我不认为你需要第一个获取路线。您只需定义Route :: resource(...)即可。 Laravel处理不同的请求。

See here -> Resource Controllers