我已经翻译了我需要重定向到特定控制器功能的url,但我还需要传递一个确切的参数。
例如我想显示所有足球新闻,但在网址中我没有足球运动的ID(id = 1)所以我需要将参数id = 1传递给index()函数。 / p>
Route::get('/football-news/', ['as' => 'news.index', 'uses' => 'NewsController@index']);
通过“足球”不是一种选择。作为参数,因为它只是一个例子。翻译了真实路线,代码如下:
Route::get(LaravelLocalization::transRoute('routes.football.news'), ['as' => 'news.index', 'uses' => 'NewsController@index']);
答案 0 :(得分:2)
假设您有一个NewsController来获取所有新闻,如
class NewsController extends Controller
{
public function index()
{
$news = News::all(); //you have to create News model
return view('news.index', compact('news')); //use to pass data in view
}
public function show($id)
{
$news_detail=News::find($id); //to fetch detail of news from database
return view('news.show', compact('news_detail'));
}
}
在views / news文件夹中创建index.php和show.php。在index.php中
@foreach($news as $news_item)
<div>
<a href="/news/{{$news_item->id}}">{{ $news_item->title }}</a>
</div>
@endforeach
这里使用“/ news / {{$ news_item-&gt; id}}”您可以将特定新闻的ID传递到路径文件中。 在show.php中
<h1>news</h1>
<h1>
{{ $news_detail->title }}
</h1>
<ul class="list-group">
@foreach($news_detail->detail as $details)
<li class="list-group-item">{{$details}}</li>
@endforeach
</ul>
路径文件中的
Route::get('/news/{news}', 'NewsController@show');
现在你必须在NewsController.php中创建show($ id)函数,该参数是id。
答案 1 :(得分:0)
您可以使用?id=1
参数附加索引网址(例如domain.com ?id = 1 ),并使用Request::get('id');
<在索引控制器操作中获取它/ p>
例如:
模板文件中的网址:
<a href="domain.com?id=1" />
在你的NewsController中:
public function index(Request $request){
$id = $request->get('id');
}
即使您没有在路径文件中指定通配符,您也应该能够访问该参数。
编辑: 你将不得不为不同的路线调用不同的@action。您可以传入id通配符。 例如,在路径文件中:
Route::get('tennis-news/{id}', 'NewsController@tennisIndex');
Route::get('football-news/{id}', 'NewsController@footballIndex');
然后在NewsControllery中必须有公共方法tennisIndex($id)
和footballIindex($id)
,这些方法可以访问您在路径中设置的通配符。
例如,在NewsController中
public function tennisIndex($id){
$tennnis_news = News::where('sport'='tennis)->where('id', $id)->get();
return view('tennis_news', compact('tennnis_news'));
}