shigechi-64's diary

自由・自主・自立・自尊

Laravel Collectiveのlink_to系を使ってリンク文字列にBootstrapのglyphiconを挿入できるかどうかで悩んだ

結論

たぶんできないっぽい。aタグはviewに直接書いてURL部分にrouteを使う方法を採ったけど他にやり方はあるかも。

そもそもLaravel Collectiveって何

本題に入る前に気になったので。Laravelで使用できる外部ライブラリってのは判るけど、何の為に存在しているのか気になったので公式をあたってみた。

laravelcollective.com

「私たちはLaravelフレームワークのコアから削除されてしまったコンポーネント群をメンテナンスしています。あなたの愛する、素晴らしいLaravelの機能を使い続けることができるのです」

へーそういう目的だったのね。単にHTMLを少ない記述で生成してくれるライブラリだと思ってました。Laravel Collectiveの一面としてそういう機能も持っている、ということですね。

何がしたいか?

下記のようにテキストとBootstrapのglyphiconを含んだリンクを生成したい。

<a href="https://foo/user/id"><span class="glyphicon glyphicon-home"></span> マイページ</a>

見た目はこんな感じ。
f:id:shigechi-64:20180301114417p:plain

link_to系を使うとタグを入れられない

link_to系はいくつか存在します。htmlリンクを生成するという点では同じだけど、生成の仕方がいくつかの方法から選べる、ということのようです。状況に応じて便利なほうを使ってね、ということでしょうか。

https://laravelcollective.com/docs/5.0/html#generating-urls

で、共通してリンクの文字列は第2引数で指定するんですが、ここにタグを入れてもエスケープされてしまうのでうまくglyphiconが表示されません。いろいろ試したけどだめだった。方法あったら教えてください。

route使う

しょうがないので下記のように書いた。

<li><a href="{{ route('users.show', ['id' => Auth::user()->id]) }}"><span class="glyphicon glyphicon-home"></span> マイページ</a></li>

aタグは直接書いてしまいます。URL部分にrouteを使うだけ。

リンク文字列の前にglyphicon入れたいっていう場面けっこうあると思うんですが、そういう場合link_to系は使えないってことなんですかね?わかりません。とりあえず↑のやり方でいってます。

参考

Laravel Collectiveでのhtml生成については以下の記事でよくまとめられています。

blog.motikan2010.com