如何在laravel 5.1中传递两个带有url(routing)的参数id和slug

时间:2018-02-15 20:30:22

标签: php laravel-5 slug

这很简单但我不知道怎么做?我想在网址中显示帖子ID和slug,例如" http://localhost:8000/blog/27/this-is-test-post"但它不起作用

我的路线

Route::get('blog/{id}/{slug}',['as'=>'blog.single','uses'=>'PageController@getSingle']);

我的控制器

public function getSingle($id)
{
 $article=Article::where('id','=','$id')->first();
 return view('/articles/article')->withArticle($article);
}

"我想通过id获取数据,所以我在这里只使用id"

我的观点

当我使用它时,URL是完美的,但它显示错误"试图获取非对象的属性"

<a href="blog/{{$article->id}}/{{$article->slug}}" > {{$article->title}}</a></h3>

当我使用这个

<a href="blog/{{$article->id}}{{$article->slug}}" > {{$article->title}}</a></h3>

然后我的网址如http://localhost:8000/blog/27this-is-test-post(没有任何错误)

enter image description here

2 个答案:

答案 0 :(得分:3)

使用route帮助程序。

route('blog.single', ['id' => $article->id, 'slug' => $article->slug]);

在您的链接中:

<a href="{{ route('blog.single', ['id' => $article->id, 'slug' => $article->slug]) }}">{{ $article->title }}</a>

答案 1 :(得分:1)

您可以使用路线助手

route('blog.single', ['id' => $article->id, 'slug' => $article->slug]);

或者在控制器方法中定义2个参数,即

public function getSingle($id,$slug)
 {
  $article=Article::where('id','=','$id')->first();
  return view('/articles/article')->withArticle($article);
 }

因为你在路线中定义了2个参数。试试它会工作正常。 您必须使用路由助手为表单操作生成URL或链接href,以便将其放置为单击或发布,即

<a href='{{ route('folders.list') }}'>Folders</a> 

{{ route('folders.list',['id' => 1]) }} 

或者您也可以将链接设为

<a href={{URL::to('blog/'.$article->id.'/'.$article->slug)}}>Some Link</a>

它也可以正常工作