Laravel 函数显示在控制器中

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/50550426/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-14 17:45:15  来源:igfitidea点击:

laravel function show in controller

laravelmodelcontrollerroutes

提问by louisse

I'm trying to show lessons from the course when i clicked on.

当我点击时,我试图展示课程中的课程。

model lesson

示范课

public function course(){
    return $this->belongsTo(Course::class);
}

model course

示范课程

 public function lesson() {
   return $this->hasMany(Lesson::class);

}

}

show controller

显示控制器

 public function show($id)
{
    $cours = Course::findOrFailnd($id);
    $lessons = course::findOrFail($id)->lesson;
    return view('pages.lessons', compact('lessons', 'cours'));

}

page lesson

页课

<div class="form-group">
    <strong>Lessons : </strong>
    @foreach ($lessons as $lesson )

    {{$lesson->long_text}}


    @endforeach
</div>

web routes

网络路由

Route::resource('pages/lessons', 'LessonsController@show')->name('pages.lessons');

and i have this error:

我有这个错误:

Type error: Too few arguments to function Illuminate\Routing\PendingResourceRegistration::name(), 1 passed in C:\wamp64\www\learn2code\routes\web.php on line 21 and exactly 2 expected

回答by Quezler

For resource controllers its namesinstead of name:

对于资源控制器,它names而不是name

Naming Resource Routes

By default, all resource controller actions have a route name; however, you can override these names by passing a names array with your options:

命名资源路由

默认情况下,所有资源控制器操作都有一个路由名称;但是,您可以通过传递带有选项的名称数组来覆盖这些名称:

Route::resource('photos', 'PhotoController')->names([
    'create' => 'photos.build'
]

回答by Levente Otta

Model Course

示范课程

public function lessons() {
    return $this->hasMany(Lesson::class);
}

Route

路线

Route::get('pages/lessons/{course}', 'LessonsController@show')->name('pages.courses.lessons');

OR

或者

Route::get('pages/courses/{course}/lessons', 'LessonsController@show')->name('pages.courses.lessons');

Controller show method

控制器显示方法

public function show(Course $course) {
    return view('pages.lessons', compact('course'));

}

page lesson

页课

<div class="form-group">
    <strong>Lessons : </strong>
    @foreach ($course->lessons as $lesson)

        {{$lesson->long_text}}

    @endforeach
</div>