質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

3071閲覧

LaravelのViewComposerで、Route名の取得方法

wasi300

総合スコア66

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2019/03/07 04:44

いつも世話になります。目的は達成されているのですが、記述が冗長だと思います。
もっとスマートな方法があると思うので知りたいと思ってます。

■ 実現したいこと
Laravel5.7を利用していてます。layoutsの中にfooter.blade.phpを作成しています。
このfooter.blade.php内の一部コンテンツの出力する・しないをコントロールしたいので、
ViewComposerを利用して、出力フラグを渡したいと思っています。
その為に、そのViewが作成される契機かきっかけが知りたいと思っています。
きっかけはRoute名だと思っていて、
契機はController名だと思っています。
その何れかを取得できれば、コンテンツ一部の出力制御が可能だと思っています。

■ 問題になっていること
現在、なんとかRoute名を取得することができていますが、

PHP

1dd($view->getData()['app']->getInstance()['Illuminate\Routing\Route']->uri);

こんな状態で取得しているので、いい方法が知りたいと思っています。

php

1namespace App\Http\ViewComposers; 2 3use Illuminate\Contracts\View\View; 4 5class FooterComposer{ 6 7 public function compose(View $view) 8 { 9 10 dd($view->getData()['app']->getInstance()['Illuminate\Routing\Route']->uri); 11 12 } 13}

ソース全体はこうなっています。
ServiceProviderの設定は済んでおります。

php

1use Illuminate\Routing\Route;

参照を追加して、インスタンス作ってプロパティにアクセスすればと思ったのですが、
コンストラクタからパラメータのエラーが出されてダメでした。

どなたかご教示頂けないでしょうか…。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

php

1use Illuminate\Support\Facades\Route; 2 3dd(Route::current()->uri); 4dd(Route::currentRouteName());

https://readouble.com/laravel/5.8/ja/routing.html#accessing-the-current-route

投稿2019/03/07 05:07

kawax

総合スコア10377

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wasi300

2019/03/07 05:24

ご回答ありがとうございます。 問題は無事解決いたしました。 \Route::current()->uri(); こちらで無事取得することができました。 use Illuminate\Support\Facades\Route;を追加して、 dd(Route::current()->uri); dd(Route::currentRouteName()); とやったところ、Route::currentがNotFound Route::currentRouteName()もNotFoundとなりました。 use Illuminate\Support\Facades\Route;を外して \Route::current()->uri();で期待通り \Route::current()->currentRouteName();でnullとなりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問