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

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

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

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

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

Q&A

解決済

1回答

7331閲覧

Laravel5.1 view->share()で共有した値をControllerでも参照したい

yng13

総合スコア215

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

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

0グッド

0クリップ

投稿2016/01/23 03:12

編集2016/01/23 03:14

件名のとおりなのですが、Laravel5.1を利用しており、リクエストがhttpsなのかhttpなのかをAppServiceProviderで判定して、view->share('secure', $secure)のようにシェアしています。

ロードバランサーを経由しているので、サーバーにリクエストが到達するタイミングではhttpでのリクエストになってしまっていて、やむなくヘッダーの中のX-Forwarded-Protoの値を判定条件にしているわけです。
(この方法自体は質問の内容とは関係ないので、深くツッコまないでください。)

PHP

1// app/Providers/AppServiceProvider.php 2public function boot() 3 { 4 $secure = false; 5 6 foreach (getallheaders() as $name => $value) { 7 if ($name === 'X-Forwarded-Proto' && $value === 'https') 8 $secure = true; 9 } 10 view()->share('secure', $secure); 11 }

view->share('secure', $secure) でViewの中では$secureを参照できることはわかっているのですが、
Controllerでも$secureを参照する方法はないでしょうか?

よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

\Illuminate\View\Factoryクラスのマニュアルを見るとshareで登録したものはsharedで値を調べることが出来るので、

PHP

1$secure = view()->shared('secure');

でいけると思います。

でもviewで値を持ち回ってコントローラで使うのはなんか変な気がするので、自分ならIlluminate\Http\Requestを継承してsecureメソッドをオーバーライドしたMyRequestクラスを作り、そいつでデフォルトのリクエストクラスを置き換えるかな?

デフォルトのリクエストクラスを変更する

投稿2016/01/23 07:03

crhg

総合スコア1175

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

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

yng13

2016/01/23 08:49

コメントありがとうございます。 view()->shared('secure')で取得できるというのは知りませんでした! MyRequestクラスを実装する方法についてもアドバイスありがとうございます。 仰るとおり、Viewの値をコントローラーで使うのは違和感がありますよね。。 なので、Controllerの継承元のクラス(App\Http\Controller\Controller)の__construct()の中で同じ処理を入れるようにしました。 これはこれで、AppProviderとControllerで同じ処理が回ってしまうのがブサイクなのですが。。 protected $is_secure; protected $per_page; public function __construct() { foreach (getallheaders() as $name => $value) { if ($name === 'X-Forwarded-Proto' && $value === 'https') $this->is_secure = true; } } }
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問