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

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

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

Bladeとは、 PHPフレームワークのLaravelで使用することができるテンプレートエンジンです。テンプレートの継承とエスケープ機能を提供します。

Laravel 5

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

Q&A

解決済

1回答

25858閲覧

Laravelのbladeで画像表示したいがページによって表示されたりされなかったりする

YorihiroKatsuki

総合スコア70

Blade

Bladeとは、 PHPフレームワークのLaravelで使用することができるテンプレートエンジンです。テンプレートの継承とエスケープ機能を提供します。

Laravel 5

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

1グッド

4クリップ

投稿2016/09/28 07:14

■背景
パスワードリセットの画面を実装したいと考え、bladeを使って実装しています。
①bladeテンプレート
まず、laravelのbladeを使いmaster.blade.php(views/layouts/index.blade.php)というテンプレートを作成しました。
このmaster.blade.phpの中に、以下のように画像を表示するタグを書いています

HTML

1<img class="logo" src="image/logo.jpg" alt="logo">

このmaster.blade.phpを、
・index.blade.php(views/index.blade.php)
・email.blade.php(views/auth/password/email.blade.php)
で読み込んでいます。

②image
画像ファイルは以下に格納しています
public/image/logo.jpg
(ルートディレクトリはpublicです)

③route
index.blade.phpを表示する際は、

PHP

1Route::get('/', 'HomeController@index');

email.blade.phpを表示する際は、

PHP

1Route::get('password/email', 'Auth\PasswordController@getEmail');

です。

■症状
index.blade.phpを表示する際はlogo.jpgがちゃんと表示されるのですが、email.blade.phpを表示する際はlogo.jpgがちゃんと表示されません。
それぞれ画像のURLを見てみると、以下のようになっています。
①index.blade.phpの場合・・/image/logo.jpg
②email.blade.phpの場合・・/password/image/logo.jpg

画像が格納されているフォルダが/image/logoなので②の場合は表示されていないのだと思うのですが、これはどのように解消すればいいのでしょうか。
ちなみに、検索して{{HTML::image()}}を使う方法等が出てきたのですが、laravel5.2あたりからHTMLが削除されたみたいな話もあり、実際に{{HTML::image()}}を使おうとするとそんなクラスはないよ、と言われてしまいます。

どうかお知恵をお貸し頂けますと幸いです。

宜しくお願い致します。

ink88882👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

ヘルパー関数のassetを使ってみてはいかがでしょうか。

PHP

1<img class="logo" src="{{ asset('image/logo.jpg') }}" alt="logo">

投稿2016/09/28 08:13

Archsted

総合スコア452

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

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

YorihiroKatsuki

2016/09/28 11:19

ありがとうございます!! assetを使うと画像の表示はできたのですが、 httpsで接続すると「この接続は安全ではありません」と出て、httpsの部分が削除されてしまいます。 普通にsrc="image/logo.jpg"にするとIndex.blade.phpの場合しか表示はされないものの、httpsで接続出来ています。 立て続けに申し訳ございませんが、こちらの対処法は分かりますでしょうか?
Archsted

2016/09/28 11:28

httpsでしたか、失礼しました。 では asset() の代わりに secure_asset() にしてみてください。
YorihiroKatsuki

2016/09/28 12:05

ありがとうございます! うまく安全な接続で表示されました。 大変助かりました!!
Archsted

2016/09/28 12:11

ありがとうございます、動作してなによりです。 余談ですが、asset関数のままでも asset('image/logo.jpg', true) のように、第二引数にtrueを与えると、 secure_asset('image/logo.jpg') と同じ動作をします。 場合によってはこちらの方が使いやすい時もあるかもしれませんので、一応お伝えしておきます。
YorihiroKatsuki

2016/09/28 14:00

ありがとうございます! なるほど、勉強になりました! ありがとうございました^^
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問