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

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

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

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

Laravel 5

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

Q&A

解決済

1回答

2249閲覧

Laravel admin 管理画面で画像登録をしたい。

seven_7

総合スコア7

PHP

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

Laravel 5

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

0グッド

0クリップ

投稿2020/09/16 08:07

編集2020/09/16 08:16

Laravel5.5を使いスポーツチームのチーム一覧表を作っています。

### 実現したいこと
まずはLaravel adminで画像アップロードを可能にしGrid画面でちゃんと画像が
表示されるようにしたい。

### 現在の状態
画像以外のテキストは表示されているが、画像はパスが通ってない時に表示される
アイコンになっており画像は表示されていない。

#### 自分の学習レベル
ネットや書籍でCRUD操作を勉強して、チーム一覧を表示できた程度。

### 質問内容
CRUD操作でデータを登録するのは自分でユーザー側には自分が登録した一覧だけを表示させるため
管理画面が必要と思いLaravel adminをインストールしました。

Laravel adminの画面では下記のような表示ができております。

Grid created_at, updated atは省略

idt_nameteam_logo
1A-teamlogo画像を表示させたい
B-teamlogo画像を表示させたい
C-teamlogo画像を表示させたい

Model:Team.php

<?php namespace App; use Illuminate\Database\Eloquent\Model; class Team extends Model { protected $fillable = [ 't_name', 'team_logo' ]; public function players() { return $this->hasMany(Player::class); } }

TeamController

<?php namespace App\Admin\Controllers; use App\Team; use Encore\Admin\Controllers\AdminController; use Encore\Admin\Form; use Encore\Admin\Grid; use Encore\Admin\Show; class TeamsController extends AdminController { /** * Title for current resource. * * @var string */ protected $title = 'Team'; /** * Make a grid builder. * * @return Grid */ protected function grid() { $grid = new Grid(new Team()); $grid->column('id', __('Id')); $grid->column('team_logo', __('Team_Logo'))->image(); $grid->column('t_name', __('T name')); $grid->column('created_at', __('Created at')); $grid->column('updated_at', __('Updated at')); return $grid; } /** * Make a show builder. * * @param mixed $id * @return Show */ protected function detail($id) { $show = new Show(Team::findOrFail($id)); $show->field('id', __('Id')); $show->field('team_logo', __('Team_Logo'))->image(); $show->field('t_name', __('T name')); $show->field('created_at', __('Created at')); $show->field('updated_at', __('Updated at')); return $show; } /** * Make a form builder. * * @return Form */ protected function form() { $form = new Form(new Team()); $form->image('team_logo', 'Team_Logo'); $form->text('t_name', __('T name')); return $form; } }

routes.php

<?php use Illuminate\Routing\Router; Admin::routes(); Route::group([ 'prefix' => config('admin.route.prefix'), 'namespace' => config('admin.route.namespace'), 'middleware' => config('admin.route.middleware'), 'as' => config('admin.route.prefix') . '.', ], function (Router $router) { $router->get('/', 'HomeController@index')->name('home'); $router->resource('teams', TeamsController::class); //追加 Route::get('image/{filename}', function ($filename) //ここから画像アップロード { $path = storage_path() . '/app/image/' . $filename; if(!File::exists($path)) abort(404); $file = File::get($path); $type = File::mimeType($path); $response = Response::make($file, 200); $response->header("Content-Type", $type); return $response; }); //ここまで });

#### 現在の画像パス
<img src="/storage/images/123.jpg" style="max-width:200px;max-height:200px" class="img img-thumbnail">

参考サイトを自分のパターンに置き換えて記述をしてきたつもりですが画像が表示されませんでした。

どのようにすると画像が表示されますでしょうか。

どうぞよろしくお願いいたします。

#### 開発環境
MAMP:4.5
OS:mac catalina 10.15.6
Laravel:5.5

#### 参考にしたサイト
https://qiita.com/pikonori/items/a04066010e7380b3ee38

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

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

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

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

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

guest

回答1

0

ベストアンサー

【現在の画像パス】に、【ルート設定】を合わせるべきかと思います。

routes.php

Route::get('image/{filename}', function ($filename) //ここから画像アップロード ↓ Route::get('storage/image/{filename}', function ($filename) //ここから画像アップロード

逆(【ルート】に【パス】を合わせる)もできますよ。

投稿2020/09/18 06:59

mix-peach

総合スコア1910

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

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

seven_7

2020/09/19 09:36

お返事ありがとうございます。 routeを変更しても画像パスへのURL自体が変化しなかったので今一度コードの意味を 確認しながらやってみます。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問