2013-02-12 2 views
2

Я работаю над laravel php framework, у меня есть простой вопрос: При использовании механизма шаблонов лезвий я обычно использую html вспомогательные функции для визуализации форм, ссылок или чего-то еще.Ссылка на изображения в маршрутах в Laravel

Теперь, когда я пытаюсь поставить ссылку на конкретный маршрут, я обычно нравлюсь, что:

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

Первый параметр принимает маршрут, а второй один берет строку, которая будет отображаться, Чтобы сделать это проще этот код будет производить:

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

Теперь я хочу, чтобы заменить TheAuthor с изображением, что я могу сделать?

ответ

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; 
} 
+0

Спасибо @theshiftexchange :) –

+0

На самом деле это 'HTML :: linkRoute()' –

+0

Не могли бы вы просто использовать '{!! HTML :: link_to_route ('author', 'icon')) !!} '? –

11

Или вы можете использовать {{маршрут}}

Ex:

<a href="{{route($route,$params)}}"><img src="'.$image.'" /></a>
1

Это может стать утомительным, если вы делаете это во всем место, но в изолированных точках лучшим способом справиться с этим было бы полное завершение всего вызова метода link_to_ * в HTML :: decode.

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

Там нет ничего, что вы можете сделать с внутренней функции (например, обертывание «название» часть в декодировании), так как очистка происходит внутри вызова функции, но если вы декодировать всю ссылку будет оказывать html правильно.

Смежные вопросы