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

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

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

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

Q&A

解決済

2回答

808閲覧

Laravel5.4で404エラーが出てしまう

yamaoka

総合スコア27

Laravel 5

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

0グッド

0クリップ

投稿2017/07/06 09:18

編集2017/07/06 09:35

Laravelでメッセージアプリを作っています
メッセージ一覧を表示させようとするとどうしても404エラーが出てしまいます。

ルーティングかコントローラーの設定で引っかかっているのだろうとは思っているのですが、自分ではおかしな点がわからなかったのでここが原因ではないかなどご指摘していただけますでしょうか

【現在の設定】
メッセージコントローラーの対象の部分はこのようになっています

public function index() { $messages= Message::orderBy('id', 'desc')->paginate(20); return view('messages.index', compact('messages')); }

ルート

Route::resource('messages', 'MessageController');

下記のように書き換えてもやはり404エラーになってしまいました

Route::get('messages', 'MessageController@index');

ビュー
messagesフォルダーをつくり、その中にindex.blade.phpを入れています

【ルートリストでルートを見たとき】
messages | messages.store | Patter\Http\C
ontrollers\MessageController@store | web |
| | GET|HEAD | messages | messages.index | Patter\Http\C
ontrollers\MessageController@index | web |
| | GET|HEAD | messages/create | messages.create | Patter\Http\C
ontrollers\MessageController@create | web |
| | PUT|PATCH | messages/{message} | messages.update | Patter\Http\C
ontrollers\MessageController@update | web |
| | GET|HEAD | messages/{message} | messages.show | Patter\Http\C
ontrollers\MessageController@show | web |
| | DELETE | messages/{message} | messages.destroy | Patter\Http\C
ontrollers\MessageController@destroy | web |
| | GET|HEAD | messages/{message}/edit | messages.edit | Patter\Http\C
ontrollers\MessageController@edit

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

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

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

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

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

coba-coba

2017/07/06 10:07

以下の4点を教えてください。1. ドキュメントルートをどこに設定しているか。2. アクセスしたURL。3. サーバー環境。4. エラーの情報
guest

回答2

0

ベストアンサー

新規のLaravel5.4でLaravel newしたプロジェクトとValetで確認してみました
プログラムは以下作成したものに、記載のコードを貼り付けました

#Namespaceは App\Http\Controllers php artisan make:controller MessageController -r で作成 #Namespaceは App php artisan make:model Message -m で作成 #手動作成 resources/messages/index.blade.php #ルート設定追記 routes/web.php >Route::get('messages', 'MessageController@index');

この状態で、「php artisan route:list」コマンドでルート設定を確認した所、
URLはmessages、ActionはApp\Http\Controllers\MessageController@indexで登録されており、
http://xxxx.dev/messagesへのアクセスでindexメソッドの内容が表示できました。

質門のルートリストの内容で、NamespaceをPatterに変えているようなので
composer.jsonのautoloadのpsr-4にPatterの設定を追加して

"autoload": { "psr-4": { "App\\": "app/", "Patter\\": "patter/" } },

patter用のディレクトリに以下プログラムを配置して、
(Laravelプロジェクトルート)/patter/Http/Controllers/MessageController
MessageControllerのnamespaceをPatter\Http\Controllersに変えた後にルート設定を確認した所、以下の調整で正常に動作しました
Route::get('messages', '\Patter\Http\Controllers\MessageController@index');

namespaceをapp以外にする時は、psr-4設定などを調整する必要があるので、特にPatterのnamespaceにこだわりが無い場合は、Appのnamespaceのままで開発をすると手間がかからないかと思います。
Patterにする場合は、compser.jsonの設定と「composer dump-autoload」でautoloadファイルの更新を行ってください。
routes/web.phpのgetの\Patter\Http\Controllers\のnamespaceの接頭語を省略したい場合は、RouteServiceProvider.phpの$namespaceプロパティを調整かnamespaceメソッドで指定してください。

投稿2017/07/08 16:49

aro10

総合スコア4106

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

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

fagai

2017/07/09 04:52 編集

namespaceをapp以外にした場合に、手間がかかるというところで補足しておきます。 Laravelの場合、`php artisan app:name 名前`で名前空間の名前をappから独自のものに一括で変更することが出来ます。 なので質問者は`php artisan app:name Patter`を実行したものだと思います。
aro10

2017/07/09 07:59

``` php artisan app:name ``` そういう機能もあったんですね [Configuration#After Installation](https://laravel.com/docs/5.0/configuration) それならば、Patterだけを使うのであれば簡単に変えれますね
guest

0

Messageクラスはちゃんとuseしていますか?

投稿2017/07/06 15:18

fagai

総合スコア2158

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問