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系を使うとspanタグを入れられない

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

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

で、共通してリンクの文字列は第2引数で指定するんですが、ここにspanタグを入れてもエスケープされてしまうのでうまく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