我在laravel 5中遇到了路径问题。我想建立一个允许我用变量创建路由的系统。我已经搜索过,但我发现没有什么对我有用。 我想在网址中添加一个变量,这样当我点击我的按钮时,它会在网址中显示我:... / $ range / $ sub-range / $ product_name 例如:... /美容/卫生/保湿霜。 谢谢你的帮助
更新1
@JeffreyWesterkamp是的我做了这样的路线:Route::get('/{name}', 'RangeController@getRange')->name('range');
,并在我的控制器中:
public function getRange($name)
{
$ranges=Range::all();
$aRange=Range::find($name);
return view('guest/range/index')->with('aRange', $aRange)->with('ranges',$ranges)->with('name',$name);
}
我在这种情况下使用了两个视图。 layoutguest.blade.php和index.blade.php在一个文件夹(guest / range /)中。 在我看来布局中,我做了这个:
@foreach ($ranges as $range)
<li>
<a href="{{route('range',$range->name)}}">{{$range->name}}</a>
</li>
@endforeach
在index.blade.php的一边。我做了
@foreach ($ranges as $gamme)
@extends('layoutguest')
@section('content')
@foreach ($ranges as $gamme)
<section ...>
<div ....>
<h4>{{$range->name}}</h4>
<p>
{{$range->description}}
</p>
</div>
.......
</section>
@endforeach
@endsection
现在,当我点击layoutguest中的菜单(范围)时。它显示在url:domaine / public / nameofrange中
这很好。但我在index.blade上遇到@foreach
问题,它显示所有范围的名称和描述。虽然我希望它在活动菜单上显示名称和描述,而不是所有范围。
布局上的@foreach
效果很好!
非常感谢您的协助,我期待着您的回复。
更新2
如果我将$name
替换为$id
。我在layoutguest.blade和index.blade中拥有我想要的东西。但是网址显示'public / 1'。
我取消了index.blade的@foreach
并添加了`{{$ aRange-&gt; name}}
我想知道如何在我的网址和我的网页中提供该范围的信息,例如在url“domaine / public / nameofgamme”和index.blade“名称和范围说明”中感谢您的支持帮助
答案 0 :(得分:0)
回应更新2
在controller
$aRange = Range::find($name)
中public function getRange($name)
{
$ranges = Range::all();
$aRange = Range::find($name);
return view('guest/range/index')->with('aRange', $aRange)->with('ranges',$ranges)->with('name',$name);
}
:
find
public function getRange($name)
{
$ranges = Range::all();
// Use where() here to search by anything else than primary index
$aRange = Range::where('name', $name)->first();
return view('guest/range/index')->with('aRange', $aRange)->with('ranges',$ranges)->with('name',$name);
}
方法总是按主索引进行搜索。我们可以更改此行以允许我们检索范围记录其中该名称对应于您的变量的值,如下所示:
where
这基本上告诉您的数据库:查找名称为$name
的所有记录first
,当您完成搜索时,请提供with()
记录,而不是全部。
只是为了它,您还可以通过将视图参数作为数组传递来重新格式化view()调用,而不是为每个变量单独调用return view('guest/range/index', [
'aRange' => $aRange,
'ranges' => $ranges,
'name' => $name
]);
:
compact()
...并且因为变量名称与视图的名称相同,所以使用return view('guest/range/index', compact(
'aRange',
'ranges',
'name'
]);
函数可以更短:
<td align='center' span style="font-weight:bold;"><a href="save_new.php</a></td>