如何在laravel 5.1中将标题显示为url而不是id?

时间:2015-08-03 08:01:52

标签: php laravel laravel-5 laravel-5.1

控制器中的

 public function show($id)
 {

 }

路线

Route::get('post/{id}','PostController@show');

如何将标题显示为url而不是id?是否可以只更改url作为标题,否则我们需要在数据库表中指定唯一标题?

4 个答案:

答案 0 :(得分:1)

控制器中的

public function show($title) // For the understanding
 {

 }

路线

Route::get('post/{title}','PostController@show');

只需使用title代替id

答案 1 :(得分:1)

控制器中的

 public function show( $title = "basic", $id = 0 ) 
 {

 }

路线

Route::get('post/{title}-{id}','PostController@show')->where("id", "[0-9]+");  // id should be integer

在视图中添加title左侧id

顺便说一句,你不需要独特的slu ..

答案 2 :(得分:1)

无论您在Route中使用什么。它可以是{id}{title}{slug}或其他任何内容。这就像一张外卡。重要的是你正在通过外卡。这取决于您的刀片文件。

您的刀片文件应如下所示:

<table>
    <tr>
        <th>ID</th>
        <th>Title</th>
        <th>Other</th>
    </tr>
    @foreach($datas as $data)
    <tr>
        <td>{{ $data->id }}</td>
        <td><a href="{{ action('PostController@show',[$data->id]) }}">{{ $data->title }}</a></td> 
        <!-- by using [$data->id] as a second parameter when a user click on title it will view the show page with data of the same row from database -->
        <td>{{ $data->other }}</td>
    </tr>
    @endforeach
</table>

<强>路线:

Route::get('post/{id}','PostController@show');

<强>控制器:

public function show($id)
{
    $post = Post::findOrfail($id);
    return view('folder.fileName',compact($post));
}

答案 3 :(得分:0)

这很简单!只需将其添加到您的模型类:

public function getRouteKeyName()   
{
return '[your-column-name-here]';
}

Laravel使用此函数getRouteKeyName()来表示名称:)