4

Laravelでブログを設定していますが、でエスケープされたURLを生成する方法がわからないようですHTML::link(..)。たとえば、Department Newsなど、ブログ内のさまざまなカテゴリへのリンクがあります。次のような形式のリンクを取得しようとしていますhttp://localhost/blog/category/department+newsDepartment News$post->category

私は次のコードを試しましたが、http://localhost/blog/Department News

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

これをエスケープして目的のURLを生成するにはどうすればよいですか?

4

2 に答える 2

7

通常、各投稿カテゴリslugでデータベース内のURLフラグメントの列を使用してから、次のようなものを使用します。

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

LaravelではURLの特定の部分のみを自動的にエンコードする方法がないように思われるため、自分でエンコードする必要があります。

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

「スラッグ」アプローチの使用を検討することをお勧めします。必ずしもデータベースに保存する必要はありません。クラスにその場で生成させることができます。

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

あなたが正確に何を扱っているのかはわかりませんが、うまくいけばあなたはその考えを理解するでしょう。

于 2013-01-07T17:09:24.787 に答える
0

ごめん。私はウェズリーに同意しません、これはうまくいきます...

名前付きルートを使用した場合、Url::route('category_browse',[category])呼び出しは値をエンコードします。routeメソッドの2番目のパラメーターは、混合コンテンツを許可します。したがって、ルートにパラメータが1つしかない場合は、単一の値を渡すことができます。それ以外の場合は配列を渡すことができます。

小枝(TwigBridge)ではこれは...

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

そうでなければ(ブレード)それは..。

{{ 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'
    )
);
于 2014-05-02T11:29:34.643 に答える