Bladeテンプレート上で条件によりURLを切り替える
Bladeテンプレート上で条件によりURLを切り替える
Bladeテンプレート上でControllerから渡した変数によってURLを切り替える時のやり方で少し詰まったので、備忘録として記載
環境
- Laravel 5.7
現象
ルート名から分岐などなくURLを生成するケースでは、以下の様なコードで生成できる。
<a href="{{ route('your.route.hoge') }}">リンクテキスト</a> ⇒生成されるコード <a href="http://domain/hoge">リンクテキスト</a>
しかし、変数によって分岐させたいときに以下のコードではうまくいかない。
<a href=" @if ($state === 1) route('your.route.hoge1') @elseif ($state === 2) route('your.route.hoge2') @elseif ($state === 3) route('your.route.hoge3') @endif ">リンクテキスト</a> ⇒生成されるコード <a href="route('your.route.hoge1')">リンクテキスト</a>
対応
以下のようなやりかたで生成できた。
<a @if ($state === 1) href={{ route('your.route.hoge1') }} @elseif ($state === 2) href={{ route('your.route.hoge2') }} @elseif ($state === 3) href={{ route('your.route.hoge3') }} @endif >リンクテキスト</a> ⇒生成されるコード <a href="http://domain/hoge1">リンクテキスト</a>
しかし、そもそもViewで分岐などをやろうとするのが良くないので、 Controllerでurlを変数に設定してViewからは呼び出すだけにした方が良いと思う。
<a href="{{ $url }}">リンクテキスト</a>