Создание ссылки на изображение с помощью HTML Helper

Я пытаюсь создать ссылку на изображение с помощью HTML-помощника Laravel 4. Но, похоже, это не работает. У меня есть эта строка кода

{{ HTML::link("#", HTML::image("img/logo.png", "Logo") ) }}

Но это просто выводит такую ​​строку:

<img src="http://localhost/worker/public/img/logo" alt="Logo">

Как так.??


person mXX    schedule 25.09.2013    source источник
comment
В laravel {{ $string }} выводит безопасную строку, в которой закодированы символы html, такие как ‹ и ›. Попробуйте использовать {!! $string !!} вместо этого, чтобы избежать кодирования при необходимости. Подробнее см. здесь: stackoverflow.com/questions/ 29253979/   -  person Hop hop    schedule 15.10.2016


Ответы (6)


Вероятно, вам придется:

<a href="#">{{ HTML::image("img/logo.png", "Logo") }}</a>

Потому что link() использует сущности для экранирования заголовка:

public function link($url, $title = null, $attributes = array(), $secure = null)
{
    $url = $this->url->to($url, array(), $secure);

    if (is_null($title) or $title === false) $title = $url;

    return '<a href="'.$url.'"'.$this->attributes($attributes).'>'.$this->entities($title).'</a>';
}

Создание этого исходного кода:

"<a href="#">&lt;img src=&quot;http://localhost/img/logo.png&quot; alt=&quot;Logo&quot;&gt;</a>"
person Antonio Carlos Ribeiro    schedule 25.09.2013

Я думаю, что это лишнее без причины. Я бы сделал:

<a href="#"><img src={{asset('img/logo.png')}} alt="Logo"></a>

Если мне нужна динамическая ссылка вместо #, я бы сделал:

<a href="{{URL::to('/')}}"><img src={{asset('img/logo.png')}} alt="Logo"></a>

Старайтесь использовать html столько, сколько сможете.

person kJamesy    schedule 25.09.2013

Вы также можете использовать html_entity_decode, чтобы ваш код работал.

{{ html_entity_decode( HTML::link("#", HTML::image("img/logo.png", "Logo") ) ) }}
person Greg    schedule 04.08.2014
comment
Превосходно! Это помогло мне при попытке использовать глификон начальной загрузки, например, в {{ html_entity_decode(Menu::item('home','<span class="glyphicon glyphicon-home"></span> Home')) }} - person Pathros; 25.04.2015
comment
Кажется, это самый ларавельский подход? Вы также можете обернуть приведенный выше код в пользовательскую вспомогательную функцию, чтобы очистить его. - person PeterG; 06.05.2015

Помощник HTML был удален из Laravel 5

теперь вы можете просто использовать это

<img src="{{ asset('logo.png') }}" alt="logo">

Этот ресурс по умолчанию указывает на общую папку вашего личиночного приложения.

person Shubham Bansal    schedule 02.03.2017

В дополнение к правильному ответу вы также можете добавить некоторые атрибуты, такие как height и width.

<a href="#">{{ HTML::image("img/logo.png", "Logo",array('height'=>'100','width'=>'100')) }}</a>
person ErcanE    schedule 22.03.2015

person    schedule
comment
Спасибо, Антон, и добро пожаловать в StackOverflow. Можете ли вы объяснить свой ответ или добавить немного больше деталей? Таким образом, ваш ответ будет более полезен для людей (и получит одобрение) - person goto; 12.08.2016