代码之家  ›  专栏  ›  技术社区  ›  davidvera

Laravel 5.5-在URL中传递带有route::resource的变量?

  •  0
  • davidvera  · 技术社区  · 7 年前

    我试着用在路径中有变量的laravel创建一个路由。 我写道:

    Route::resource('/maps/valuechains/{valuechain_id}/segments/', 'BackOffice\SegmentController');
    

    在我的控制器中,我创建了一个索引方法:

    public function index(EntityRepository $vcs, $valuechain_id)
    {
        $entitiesLists = $vcs->getEntities();
    
        $segments = Segment::select()
            ->join('valuechains', 'segments.valuechain_id', 'valuechains.id')
            ->join('lang_segment', 'segments.id', 'lang_segment.segment_id')
            ->join('langs', 'langs.id', 'lang_segment.lang_id')
            ->join('admins', 'segments.admin_id', 'admins.id')
            ->where([
                ['langs.isMainlanguage', '=', 1],
                ['valuechains.id', '=', $valuechain_id]
            ])
            ->get();
    
        $segmentCount = Segment::count();
        return view('admin.pages.maps.segments.index', compact('segments', 'segmentCount', 'entitiesLists'));
    }
    

    在我看来,我有一个积垢

    <span style="overflow: visible; width: 110px;">
        <span>
            <a href="{{ route('segments.show', $segment->id) }}"
               class="m-portlet__nav-link btn m-btn m-btn--hover-accent m-btn--icon m-btn--icon-only m-btn--pill"
               title="View details">
                 <i class="la la-eye"></i>
             </a>
           <a href="{{ route('segments.edit', $segment->id) }}"
               class="m-portlet__nav-link btn m-btn m-btn--hover-accent m-btn--icon m-btn--icon-only m-btn--pill"
               title="Edit details">
               <i class="la la-edit"></i>
            </a>
            {!!
               Form::open([
                  'method'    => 'DELETE',
                  'route'     => ['segments.destroy', $segment->id]
               ])
            !!}
            {!!
               Form::submit(
                  ' ',
                 [
                  'class' => 'la la-trash m-portlet__nav-link btn m-btn m-btn--hover-danger m-btn--icon m-btn--icon-only m-btn--pill',
                  'title' => 'Delete'
                 ]
               )
            !!}
            {!! form::close() !!}
        </span>
    </span>
    

    我的问题是关于路线名称:

    未定义路由[segments.show]。(视图:c:\wamp64\www\network dev\resources\views\admin\pages\maps\segments\index.blade.php)

    在查看我的路线列表时,我看到了:

    网址如下: 管理/映射/值链/值链/段 路由名称为:index

    app\http\controllers\backoffice\segmentcontroller@index 我应该用segments.index代替

    1 回复  |  直到 7 年前
        1
  •  0
  •   davidvera    7 年前

    在我的路线中,我只需要删除一个“segments/”,将“segments/”替换为“segments%”:

    Route::resource('/maps/valuechains/{valuechain_id}/segments/', 'BackOffice\SegmentController');
    

    正确的书写方式是:

    Route::resource('/maps/valuechains/{valuechain_id}/segments', 'BackOffice\SegmentController');