Обмислям да добавя @link
blade директива. Нещо като @link($user)
и преобразувайте това в <a href="/bg/user/$user->id">$user->name</a>
.
С течение на времето мога да го направя по-сложно, където връзката зависи от типа на $user
, като $order
и т.н. Мога да добавя методи към обекта, като getHref и getLinkName.
Изглежда като добра и проста идея, но не виждам някой друг да прави този модел онлайн.
Наясно съм с няколко алтернативни начина за изразяване на същото, например {{$user->makeLink()}}, {{$linkMaker->link($user}}, link_to_*
Въпросът ми е, правено ли е това преди? Има ли пакет, който използва blade директиви за генериране на връзка?
Ако не е направено преди, има ли причина да го избягвате? Например в 5.1 документацията е премахнала Blade::extends. Или е лоша идея блейд шаблоните да генерират HTML, той е проектиран да извежда низ.
Кодът по-долу работи - въпросът ми е трябва ли да използвам чужд пакет или различен шаблон.
\Blade::extend(function($view, $compiler) {
$pattern = "/(?<!\w)(\s*)@link\(\s*(.*?)\)/";
return preg_replace($pattern, '$1<a href="/bg/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