2

私はlaravelphpフレームワークに取り組んでいます、簡単な質問があります。ブレードテンプレートエンジンを使用している間、私は通常htmlヘルパー関数を使用してフォームやリンクなどをレンダリングします。

今、私が特定のルートへのリンクを入れようとすると、私は通常それが好きです:

{{ HTML::link_to_route('author','TheAuthor')) }}

最初のパラメータはルートを取り、2番目のパラメータは表示される文字列を取ります。コードが生成するのを簡単にするために:

<a href="ROUTE URL">TheAuthor</a>

TheAuthorを画像に置き換えたいのですが、どうすればよいですか?

4

3 に答える 3

11

または {{route}} を使用できます

元:

<a href="{{route($route,$params)}}"><img src="'.$image.'" /></a>
于 2013-05-12T19:54:12.427 に答える
3

これが聞きたい答えではないことはわかっていますが、link_to_route 経由で画像を渡すことはできません。

問題は、HTML クラスからの出力が自動的にエスケープされることです。したがって、これを渡そうとすると:

{{ HTML::link_to_route('author','<img src="'.URL::base().'assets/images/image.jpg" alt="icon" />')) }}

次のようになります。

&lt;img src=&quot;http://laravel3.dev/assets/images/image.jpg&quot; alt=&quot;icon&quot; /&gt;

これは画面上のテキストのみで、画像はありません。URI::to_route('author')代わりに、自分でリンクを使用して生成する必要があります。したがって、ヘルパーを次のようにします (テストされていません)。

function link_to_route_image($route, $image)
{
   $m = '<a href="'.URL::to_route($route).'">'
      . '<img>'.$image.'</img>'
      . '</a>';
   return $m;
}
于 2013-02-12T13:17:02.410 に答える
1

いたるところでこれを行うと面倒になるかもしれませんが、孤立した場所でこれを処理する最善の方法は、実際には link_to_* メソッド呼び出し全体を HTML::decode でラップすることです。

{{ HTML::decode(HTML::link_to_route('author','<img src="{URL::base()}assets/images/image.jpg" alt="icon" />')) }}

関数呼び出し内でクリーニングが行われているため、関数の内部からできることは何もありません (デコードで「タイトル」部分をラップするなど) が、リンク全体をデコードすると、html が適切にレンダリングされます。

于 2014-01-29T09:56:33.247 に答える