在控制器 Laravel 5.8.22 中使用来自 URL 的参数

我试图anINT从这个 URL: myapp.build/courses/anINT(在 中实现CoursesController) 传递到下面$id的Lesson_unitsController函数中。我尝试了很多解决方案,但似乎无法解决问题。


CoursesController 中实现 url 的函数是:


    public function show($id)

{

    $course = Course::find($id);

    return view('courses.show')->with('course', $course);

}

show.blade.php 文件的一部分是:


@if(!Auth::guest())

    @if(Auth::user()->id == $course->user_id)

        <a href="/courses/{{$course->id}}/edit" class="btn btn-outline-secondary btn-light">Edit Course</a>

        <a href="/lesson_units/specificindex" class="btn btn-outline-secondary btn-light">Lesson Units</a>


        {!!Form::open(['action'=> ['CoursesController@destroy', $course->id], 'method' => 'POST', 'class' => 'float-right'])!!}

            {{Form::hidden('_method', 'DELETE')}}

            {{Form::submit('Delete', ['class' => 'btn btn-danger'])}}

        {!!Form::close()!!}

    @endif

@endif

该Lesson_unitsController功能是:


    public function index()

{

    $lesson_units = Lesson_unit::orderBy('title','asc')->paginate(10);

    return view('lesson_units.index')->with('lesson_units', $lesson_units);

}


public function specificindex($id)

{

    $course = Course::find($id);

    return view('lesson_units.specificindex')->with('lesson_units', $course->lesson_units);

}

web.php 中的路由是:


Route::resource('courses', 'CoursesController');

Route::resource('lesson_units', 'Lesson_unitsController');

Route::get('/courses/{id}', 'Lesson_unitsController@specificIndex');

我想的是,链接,当Lesson Units点击了网页上,在idurl中传递给specificindex该函数Lesson_unitsController。现在,我只得到一个空白页。我究竟做错了什么?


aluckdog
浏览 152回答 2
2回答

杨__羊羊

您没有设置路由来处理传入。Route类中$id的资源方法将提供一个到您的控制器的GET路由,而不需要任何变量。它是默认的索引路由,默认情况下不传递变量。Lesson_unitsController有几种方法可以做到这一点,但最简单的方法是为您的特定需求创建一条新路线:Route::get('lesson_units/{id}', 'Lesson_unitsController@specificIndex');然后specificIndex使用传入变量在控制器中创建函数:public function specialIndex($id){&nbsp;$course = Course::find($id);&nbsp; &nbsp;// return view to whatever you like}HTH
打开App,查看更多内容
随时随地看视频慕课网APP