我正在考慮添加一個@link
刀片指令。類似於@link($user)
並將其轉換爲<a href="/user/$user->id">$user->name</a>
。替代爲laravel添加@link blade指令
我可以隨着時間的推移使其更加複雜,其中鏈接取決於$user
的類型,如$order
等。我可以向對象添加方法,如getHref和getLinkName。
這似乎是一個很好的和簡單的想法,但我沒有看到其他人在線做這種模式。
我所知道的一些替代方式來表達相同的,例如{{$用戶> makeLink()}},{{$ linkMaker->鏈接($用戶}},link_to_ *
我的問題是,這是否做過?有沒有使用刀片指令生成鏈接的包?
如果以前沒有做過,是否有理由避免它?例如,在5.1該文檔已經刪除了Blade :: extends。或者,它是一個不錯的主意,讓刀片模板生成HTML,它被設計爲輸出字符串。
下面的代碼工作 - 我的問題是我應該usi在其他人的包裹中,或不同的模式。
\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'等功能。https://github.com/LaravelCollective/html。它是Laravel的一部分,但自從'5. *'以來已被刪除。以下是http://laravel.com/docs/4.2/helpers#urls的文檔。我喜歡你的想法,把它包裝成刀片指令。最近我在想同樣的 –