【问题标题】:URLEncode for HTML::link in LaravelLaravel 中 HTML::link 的 URLEncode
【发布时间】:2012-12-21 10:56:42
【问题描述】:

我正在 Laravel 中建立一个博客,但似乎无法弄清楚如何使用 HTML::link(..) 生成转义 URL。例如,我在博客中有不同类别的链接,例如部门新闻,我正在尝试获取格式如下的链接 - http://localhost/blog/category/department+news.,其中 Department News$post->category 生成

我尝试了以下代码,它产生了http://localhost/blog/Department News

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

如何转义并生成所需的 URL?

【问题讨论】:

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

标签: php laravel


【解决方案1】:

对不起。我不同意韦斯利,这行得通...

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

在树枝上 (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' =>'BlogController@category',
        'as' => 'category_browse'
    )
);

【讨论】:

【解决方案2】:

通常,您会让每个帖子类别在数据库中为 URL 片段使用一个 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));
    }
}

我不确定你到底在做什么,但希望你能明白。

【讨论】:

  • 我不是 Laravel 用户,但我检查了文档,什么也没看到,然后在源代码周围挖掘(追逐了一段时间的静态方法)并得出结论没有内置功能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-24
  • 1970-01-01
  • 1970-01-01
  • 2014-08-26
相关资源
最近更新 更多