Я рассматриваю возможность добавления блейд-директивы @link
. Что-то вроде @link($user)
и преобразовать это в <a href="/user/$user->id">$user->name</a>
.
Могу со временем усложнить, где ссылка зависит от Типа $user
, вроде $order
и т.д. Могу добавить к объекту методы, вроде getHref и getLinkName.
Это кажется хорошей и простой идеей, но я не вижу, чтобы кто-то еще делал этот шаблон в Интернете.
Я знаю несколько альтернативных способов выразить то же самое, например {{$user->makeLink()}}, {{$linkMaker->link($user}}, link_to_*
Мой вопрос, это было сделано раньше? Есть ли пакет, использующий блейд-директивы для создания ссылки?
Если этого не было сделано раньше, есть ли причина этого избегать? Например, в версии 5.1 из документации удален Blade::extends. Или, это плохая идея, чтобы шаблоны лезвий генерировали HTML, он был разработан для вывода строки.
Код ниже работает - мой вопрос в том, должен ли я использовать чужой пакет или другой шаблон.
\Blade::extend(function($view, $compiler) {
$pattern = "/(?<!\w)(\s*)@link\(\s*(.*?)\)/";
return preg_replace($pattern, '$1<a href="/user-management/view/<?php echo $2->getRouteKey() ?>"><?php echo $2->name ?></a>', $view);
});
link_to
,link_to_route
и т. д. github.com/LaravelCollective/html< /а> . Он был частью Laravel, но был удален с5.*
. Вот документация для него laravel.com/docs/4.2/helpers#urls. И мне нравится твоя идея о том, чтобы обернуть это в директиву лезвия. В последнее время я думаю о том же - person Anatoliy Arkhipov   schedule 08.06.2015