Laravel5.5を使いスポーツチームのチーム一覧表を作っています。
### 実現したいこと
まずはLaravel adminで画像アップロードを可能にしGrid画面でちゃんと画像が
表示されるようにしたい。
### 現在の状態
画像以外のテキストは表示されているが、画像はパスが通ってない時に表示される
アイコンになっており画像は表示されていない。
#### 自分の学習レベル
ネットや書籍でCRUD操作を勉強して、チーム一覧を表示できた程度。
### 質問内容
CRUD操作でデータを登録するのは自分でユーザー側には自分が登録した一覧だけを表示させるため
管理画面が必要と思いLaravel adminをインストールしました。
Laravel adminの画面では下記のような表示ができております。
Grid
created_at, updated atは省略
id | t_name | team_logo |
---|---|---|
1 | A-team | logo画像を表示させたい |
2 | B-team | logo画像を表示させたい |
3 | C-team | logo画像を表示させたい |
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
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/19 09:36