我的文章网址包含ID和slug,格式为:/articles/ID/slug
。只有ID用于记录查找,slug仅用于搜索引擎优化,而不存储在数据库中。
目前我在我的视野中(在foreach循环内)这样做:
$url = URL::route('articles.show', array('id' => $article->id, 'slug' => Str::slug($article->title)));
要生成完整的网址,例如:articles/1/accusamus-quos-et-facilis-quia
,但是; 我不想在视图中执行此操作。我想在控制器中执行它并将其传递给视图,但我无法弄清楚如何。
编辑:我正在从控制器向视图传递多个文章的数组,并且所有这些文章都具有唯一的URL,具体取决于它们各自的ID和slug。
答案 0 :(得分:1)
执行此类操作的最佳方法是使用视图演示者:
{{ $article->present()->url() }}
在演示者中:
public function url()
{
URL::route('articles.show', array('id' => $this->id, 'slug' => Str::slug($this->title)));
}
但你可以在你的模型中创建一个继承者:
public function getUrlAttribute()
{
URL::route('articles.show', array('id' => $this->id, 'slug' => Str::slug($this->title)));
}
并用作:
{{ $article->url }}