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

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

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

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Q&A

解決済

1回答

1055閲覧

laravel ルーティングがうまくいかず、blade.phpが読み込まれません。

tanakA

総合スコア2

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

0グッド

0クリップ

投稿2022/09/09 03:10

編集2022/09/09 04:39

前提

laravel学習2か月目です。
AControllerのindex.blade.phpの値を
BContorolleのindex.blade.phpに渡し、
ここからshow.blade.phpにルーティングするところで躓き先に進めません。
(ルーティングに問題があると思っておりますが、それすら良く分かりません。)
BController内にcreate,edit,delete,updateを展開していきたいと思っております。

お手数をお掛けし、申し訳ございませんがどなたかご指導いただけませんか?
何卒よろしくお願い致します。

開発環境
Windows10
Xampp3.3.0
laravel 8.83.23

実現したいこと

AControllerの社員が、自分の名前をクリックし、BControllerに移行します。
BControllerのindex上で、日付をクリックすると、BControllerのshowに移動しそこに日報を書き、責任者がコメントを入れるようなアプリケーションを開発したいと考えております。

発生している問題・エラーメッセージ

View [index] not found. index was not found. Are you sure the view exists and is a .blade.php file? throw new InvalidArgumentException("View [{$name}] not found.");

該当のソースコード

------web.php------

use App\Http\Controllers\MemberController; use App\Http\Controllers\PostController; Route::get('/', [MemberController::class,'index']) ->name('members.index'); Route::get('/posts/{member}', [PostController::class,'index']) ->name('posts.index'); Route::get('/posts/{id}', [PostController::class,'show']) ->name('posts.show');

------MembersController------

class MemberController extends Controller { // index public function index() { $members = [ 'aaa', 'bbb', 'ccc', ]; return view('members.index') ->with(['members' => $members]); } }

------PostController------

use App\Models\Member; use App\Models\Post; class PostController extends Controller { // index public function index () { $members = Member::all(); $member[]= $members; $posts = Post::latest()->get(); return view('index') ->with([ 'posts' => $posts, 'member' => $member, ]); } // show public function show ($id) { $post = Post::findOrFail($id); return view('posts.show') ->with(['post' => $post]); } }

------views/components/layout.blade.php------

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <link rel="stylesheet" href="{{ url ('css/style.css') }}"> <title>{{ $title }} </title> </head> <body> <div class="container"> {{ $slot }} </div> </body> </html>

------views/members/index.blade.php------

<x-layout> <x-slot name="title"> <title>業務報告【担当】</title> </x-slot> <h1>業務報告【担当】</h1> <ul> @forelse($members as $index => $member) <li> &laquo; <a href="{{ route('posts.index', $member) }}"> {{ $member }} </a> </li> @empty <li>登録者なし</li> @endforelse </ul> </x-layout>

------views/posts/index.blade.php------

<x-layout> <x-slot name="title"> 業務報告 </x-slot> <!-- member -----------------------------------------------------> <div class="back-link"> &laquo; <a href="{{ route('members.index') }}">【 戻る 】</a> </div> <h1>{{ $member }} </h1> <!-- member-----------------------------------------------------> <ul> @forelse($posts as $post) <li> <a href="{{ route('posts.show', $post->id) }}"> {{ $post->title }} </a> </li> @empty <li>記録なし</li> @endforelse </ul> </x-layout>

------views/posts/show.blade.php------

<x-layout> <x-slot name="title"> 業務報告 </x-slot> <!-- member -----------------------------------------------------> <div class="back-link"> &laquo; <a href="{{ route('members.index') }}">【 戻る 】</a> </div> <h1>{{ $member }} </h1> <!-- member-----------------------------------------------------> <ul> @forelse($posts as $post) <li> <a href="{{ route('posts.show', $post->id) }}"> {{ $post->title }} </a> </li> @empty <li>記録なし</li> @endforelse </ul> </x-layout>

------MemberModel------

protected $fillable = [ 'title', ];

------PostModel------

protected $fillable = [ 'title', 'customer_name', 'earnings', 'shipping_amount', 'contents', 'interim_report', 'consults', ];

試したこと

homeであるMembersControllerのindex.blade.phpから、社員名をクリックしPostControllerに行く間でエラーが発生します。PostControllerのindexが認識されないためだと思い、

Route::get('/posts/{member}', [PostController::class,'index'])
->name('posts.index');

この部分を Route::get('/posts', としたり '/memers/{member}と変えたり、いろいろ試しましたが改善できませんでした。

どなたかご教示頂けますと助かります。
何卒よろしくお願い致します。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

m.ts10806

2022/09/09 03:57

コードブロックはファイル毎に分けてください ファイル名 ```言語 コード ``` ファイル名 ```言語 コード ```
tanakA

2022/09/09 04:05

m.ts10806様 お世話になります。 申し訳ございません。今後はファイル毎に分けて記載いたします。 ご指摘ありがとうございました。勉強になりました。
m.ts10806

2022/09/09 04:08

質問は編集できますので、後から同じような問題を抱えた人が参考にすることも含めると 解決後でも修正しておいた方が良いです。 コードは質問内で最も見られる文章ですから、分かりやすいに越したことはありません。
tanakA

2022/09/09 04:34

m.ts10806様 ご指摘いただき本当にありがとうございました! おかげさまで、次回は投稿一回目から分かりやすく説明ができるようになりました。
m.ts10806

2022/09/09 04:35 編集

修正確認しました。 コードブロック内はあくまで「そのファイルのコードのみ」にしてください。 ブロックにはコピペ機能があり、そのままコピペするとPHPの方はエラーになります。 どこからどこまでが実際のコードかを知っているのは質問者だけなので、 手元で再現確認の際に回答する人がわざわざ手を入れると、質問者のコードを同じにならない可能性があり、 場合により再現せず、回答得られないことがあるからです。
tanakA

2022/09/09 04:35

はい。かしこまりました。 直ぐに修正し直します。
guest

回答1

0

ベストアンサー

return view('index')

これだと、views/index.blade.phpを参照しに行くのではないでしょうか。
エラー内容とも合致します。

投稿2022/09/09 03:57

m.ts10806

総合スコア80850

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

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

tanakA

2022/09/09 04:57

m.ts10806様 お世話になります。 「views/index.blade.phpを参照しに行く」というのは、具体的にweb.phpの間違いのご指摘でしょうか? よろしければご教示いただけませんか?
m.ts10806

2022/09/09 04:59

私が引用した個所はPostControllerに書かれていますね。
tanakA

2022/09/09 06:37

m.ts10806様 お世話になります。 return view('posts.index')にしたところ、異なるエラーが発生しました。 htmlspecialchars() expects parameter 1 to be string, array given stringでなければならないが、配列が渡されているという指摘なので、PostController内indexの $members = Member::all(); $member[]= $members; $member[]の配列指定の[]を取り外したところ、posts/index.blade.phpにpathが通るようになりました。 が、今度は<h1>の値が空で渡ってしまい社員名がほしいところが[]表示になってしまいました。 とても難しいです。何か良い方法があればご指摘頂けますと幸いです。何卒よろしくお願い致します。
m.ts10806

2022/09/09 06:46

本件とは別問題です。 いったん解決にしてください。 あと・・・こういっちゃなんですが、 もうちょっとしっかりPHPの基礎を勉強してからにしたほうが良いと思います。 現在起きている現象も変数や文字列、オブジェクトの扱いの基本部分です。 Laravelは「Web職人のためのフレームワーク」なので、それなりに敷居は高いです。 ※もともと本件もPHPとWebの基礎があればピンとくる問題。「参考書丸写し」をやってませんか?
tanakA

2022/09/09 07:22

m.ts10806様 お世話になります。 お忙しいところ、貴重なお話をして頂き心から感謝しております。 おっしゃられる通りです。気持ちばかり先走ってしまい結果を残すことだけを考えておりました。 基礎的な知識が足らず、重々分かっておりながら。 PHPの基礎に戻りやり直します。勉強をさせて頂き、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問