Laravel 5.5 - 在 URL 中使用 Route::resource 传递变量?
Laravel 5.5 - Passing a variable in the URL with Route::resource?
我尝试用 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)
在查看我的路线列表时,我看到了这个:
URL 如下:
admin/maps/valuechains/{valuechain_id}/段
路由名称是:index
App\Http\Controllers\BackOffice\SegmentController@index
我应该 segments.index 而不是
我只需要在我的路线中删除一个“/”,用 'segments' 替换 'segments/':
Route::resource('/maps/valuechains/{valuechain_id}/segments/', 'BackOffice\SegmentController');
正确的写法是:
Route::resource('/maps/valuechains/{valuechain_id}/segments', 'BackOffice\SegmentController');
我尝试用 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)
在查看我的路线列表时,我看到了这个:
URL 如下: admin/maps/valuechains/{valuechain_id}/段 路由名称是:index
App\Http\Controllers\BackOffice\SegmentController@index 我应该 segments.index 而不是
我只需要在我的路线中删除一个“/”,用 'segments' 替换 'segments/':
Route::resource('/maps/valuechains/{valuechain_id}/segments/', 'BackOffice\SegmentController');
正确的写法是:
Route::resource('/maps/valuechains/{valuechain_id}/segments', 'BackOffice\SegmentController');