Laravel:将带有ID和slug的自定义URL传递给视图

时间:2014-08-29 22:25:27

标签: php laravel-4

我的文章网址包含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。

1 个答案:

答案 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 }}