2013-01-07 37 views
2

我正在Laravel设置一个博客,似乎无法弄清楚如何生成带有HTML::link(..)的转义URL。例如,我有联系的不同类别的博客,如系新闻,我想获得一个链接格式像这样 - http://localhost/blog/category/department+news,其中,通过$post->categoryURLEncode for HTML :: link in Laravel

产生Department News我曾尝试下面的代码和它产生。 http://localhost/blog/Department News

{{ HTML::link('admin/blog/category/' . $post->category, $post->category) }} 

如何避免这种情况并生成所需的URL?

+0

只需更改laravel文件夹中的html.php中的'entities()',以满足您的需求。在那里添加转义url函数,它会被实现。 – itachi

回答

6

通常情况下,你必须每个岗位类别在数据库中的网址片段使用slug列,然后使用类似:

HTML::link('blog/category/'.$post->category->slug, $post->category->name) 

有似乎没有办法跟Laravel只自动编码URL的某些部分,因此您必须自己动手:

HTML::link(
    'admin/blog/category/'.urlencode(strtolower($post->category)), 
    $post->category 
) 

您可能需要考虑使用“slug”方法。您不必将其存储在数据库中,你可以有你的类生成它在飞行:

class Category { 
    function slug() { 
     return urlencode(strtolower($this->name)); 
    } 
} 

我不知道你究竟有什么样的工作,但希望你的想法。

+0

我不是Laravel的用户,但是我检查了文档,什么都没看到,然后在源代码中查找(追查一段时间的静态方法),并得出结论,没有内置功能。 –

0

对不起。我不同意韦斯利,这个作品...

如果您使用named routesUrl::route('category_browse',[category])调用将编码值。路线方法中的第二个参数允许混合内容。所以如果你的路线中只有一个参数,你可以传递一个值,否则传递一个数组。

在树枝(TwigBridge),这是...

{{ url_route('category_browse',[category]) }} 

否则(Blade)应该...

{{ Url::route('category_browse',[category]) }} 

,你的名字的路线应该是这样的......

Route::any('/blog/category/{category}', 
    array(
     /*'before'=>'auth_check', -- maybe add a pre-filter */ 
     'uses' =>'[email protected]', 
     'as' => 'category_browse' 
    ) 
); 
+0

由于我认为是bug,urlencoded斜线在Laravel中不起作用。 https://github.com/laravel/framework/pull/4323 此拉取请求将解决该错误。 – Artistan

+0

错误修复被拒绝,所以我写了一个包... https://github.com/Artistan/Urlencode – Artistan