我有laravel项目。当我单击我的视图按钮时,我想看到我的记录的完整描述。但我不知道如何传递正确的身份证。我的数据库表名为 - csstable。 我有模特:
<?php
class CssTable extends Eloquent
{
protected $table = 'csstable';
}
每个帖子上的查看按钮(我从数据库中获取所有帖子,因此每个帖子都有ID):
<div class="view">
<a href="{{ action('CssController@show') }}" ></a>
</div>
具有此show函数的CssController:
public function show()
{
$csstable = CssTable::all();
return View::make('cssposts/right_post', compact('csstable'));
}
我的路线:
Route::get('/css/id_of_right_post', 'CssController@show' );
Right_post,我想要来自行的描述栏中的信息,带有我点击的ID(在此字段中,我只看到最后一条记录&#39; s描述:
<h1 style="color:#fff">{{ $css->description }}</h1>
我试过这样的东西
public function show($id)
{
$csstable = CssTable::find($id);
return View::make('cssposts/right_post', compact('csstable'));
}
但是有一个错误 - 在show函数中缺少1个参数。所以我想知道,如何传递正确的ID!
答案 0 :(得分:1)
这样做的方法包括三个步骤。首先让我们选择路线:
Route::get('css/{id}', 'CssController@show');
{id}
表示它是一个匹配的参数 - 它将匹配一个完整的URI段(基本上是斜杠之间的任何东西)并使用它来传递给他传递的方法。所以对控制器:
class CssController
{
public function show($id)
{
$csstable = CssTable::findOrFail($id);
return View::make('cssposts/view', compact('csstable));
}
}
该控制器方法接受(必需的)单个参数。你可以随心所欲地调用它,但在这里我要去id
,因为它是模型的ID。最后,拼图的最后一部分是如何链接到这样的路线:
// view button for each csstable
<div class="view">
{{ link_to_action('CssController@show', $item->title, array($item->getKey())) }}
</div>
正如您所看到的,我正在使用link_to_action
帮助程序,但您使用<a href="{{{ action('CssController@show', array($item->getKey())) }}}">
的方法也可以使用。在控制器操作名称之后,您传递一个包含URI中所有参数的数组(按顺序)。在我们的例子中,我们有一个参数,它是一个包含一个项目的数组。我认为在这些情况下你也可以使用一个字符串,Laravel会将它变成一个包含一个元素的数组。我更喜欢明确。
希望这有助于您了解如何在Laravel中使用基于参数的路由系统。