前提・実現したいこと
PHP(Laravel7)で、献立アプリを作成しています。
一覧画面から詳細画面にアクセスし、詳細画面で各画像を表示したいです。
一覧画面ではforeach
を使用して投稿された料理の画像が表示されるのですが、
詳細画面では料理名は表示されてるのですが、料理の画像が表示されません。
詳細画面⬇︎
show($id)の$menuの中身
該当のソースコード
Menucontroller.php
php
1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Http\Request; 6 7use App\Models\Menu; 8use App\Http\Requests\StoreMenuForm; 9use Illuminate\Support\Facades\DB; 10 11class MenuController extends Controller 12{ 13 /** 14 * Display a listing of the resource. 15 * 16 * @return \Illuminate\Http\Response 17 */ 18 public function index() 19 { 20 // 21 // $menu = Menu::all(); 22 $menus = DB::table('menus') 23 ->select('cooking_name', 'cooking_image', 'id') 24 ->get(); 25 $today = date("Y-m-d H:i:s"); 26 return view('menu.index', compact('menus')); 27 } 28 29 /** 30 * Show the form for creating a new resource. 31 * 32 * @return \Illuminate\Http\Response 33 */ 34 public function create() 35 { 36 // 37 return view('menu.create'); 38 } 39 40 /** 41 * Store a newly created resource in storage. 42 * 43 * @param \Illuminate\Http\Request $request 44 * @return \Illuminate\Http\Response 45 */ 46 public function store(StoreMenuForm $request) 47 { 48 // 49 $menu = new Menu; 50 51 //画像ファイルのパス 52 $img_url = $request->cooking_image->store('public/upload'); 53 54 $menu->cooking_name = $request->input('cooking_name'); 55 $menu->cooking_image = str_replace('public/', 'storage/', $img_url); 56 57 $menu->save(); 58 59 return redirect('menu/'); 60 61 } 62 63 /** 64 * Display the specified resource. 65 * 66 * @param int $id 67 * @return \Illuminate\Http\Response 68 */ 69 public function show($id) 70 { 71 // 72 $menu = Menu::find($id); 73 return view('menu.show', compact('menu')); 74 } 75 76 /** 77 * Show the form for editing the specified resource. 78 * 79 * @param int $id 80 * @return \Illuminate\Http\Response 81 */ 82 public function edit($id) 83 { 84 // 85 } 86 87 /** 88 * Update the specified resource in storage. 89 * 90 * @param \Illuminate\Http\Request $request 91 * @param int $id 92 * @return \Illuminate\Http\Response 93 */ 94 public function update(Request $request, $id) 95 { 96 // 97 } 98 99 /** 100 * Remove the specified resource from storage. 101 * 102 * @param int $id 103 * @return \Illuminate\Http\Response 104 */ 105 public function destroy($id) 106 { 107 // 108 } 109} 110
show.blade.php
php
1@extends('layouts.app') 2 3@section('content') 4 <h1>{{ $menu->cooking_name }}</h1> 5 <img class="menu-image" src="{{ $menu->cooking_image }}" alt="{{ $menu->cooking_name }}"> 6@endsection
index.blade.php
php
1@extends('layouts.app') 2 3@section('content') 4<link rel="stylesheet" href="{{ asset('/css/index.css') }}"> 5 6<div class="container menu-page"> 7 <h1 class="menu-day">{{ \Carbon\Carbon::now()->format("Y/m/d") }}の献立</h1> 8 {{-- <h1>{{ $today }}</h1> --}} 9 <br> 10 <div class="menu-lists row"> 11 @foreach ($menus as $menu) 12 <div class="card menu-card" style="width: 18rem;"> 13 <a href="{{ route('menu.show', $menu->id) }}"> 14 <div class="menu"> 15 <svg class="bd-placeholder-img card-img-top" width="100%" height="0" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid slice" focusable="false" role="img" aria-label="Placeholder: Image cap"><title>Placeholder</title><rect width="100%" height="100%" fill="#868e96"/><text x="50%" y="50%" fill="#dee2e6" dy=".3em"><img class="menu-image" src="{{ $menu->cooking_image }}" alt="{{ $menu->cooking_name }}"></text></svg> 16 <div class="card-body"> 17 <p class="card-text">{{ $menu->cooking_name }}</p> 18 </div> 19 </div> 20 </a> 21 </div> 22 @endforeach 23 </div> 24 <div class="shopping-lists"> 25 26 </div> 27</div> 28 29@endsection
ルーティング
php
1<?php 2 3use GuzzleHttp\Middleware; 4use Illuminate\Support\Facades\Route; 5 6/* 7|-------------------------------------------------------------------------- 8| Web Routes 9|-------------------------------------------------------------------------- 10| 11| Here is where you can register web routes for your application. These 12| routes are loaded by the RouteServiceProvider within a group which 13| contains the "web" middleware group. Now create something great! 14| 15*/ 16 17Route::get('/', function () { 18 return view('welcome'); 19}); 20 21Auth::routes(); 22 23Route::get('/home', 'HomeController@index')->name('home'); 24 25Route::resource('menu', 'MenuController'); 26Route::group(['prefix' => 'menu', 'middleware' => 'auth'], function(){ 27 Route::get('/', 'MenuController@index')->name('menu.index'); 28 Route::get('create', 'MenuController@create')->name('menu.create'); 29 Route::post('store', 'MenuController@store')->name('menu.store'); 30 Route::get('show/{id}', 'MenuController@show')->name('menu.show'); 31});
バージョン
Laravel 7.30.4
PHP 7.4.9
長い文章になり申し訳ございません。
ご教授の程、宜しくお願い致します。
回答2件
あなたの回答
tips
プレビュー