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

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

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

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

Laravel 5

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

Q&A

解決済

2回答

15720閲覧

[Laravel5.4]ReflectionException Class App\Http\Controllers\Request does not exist

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

Laravel 5

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

0グッド

1クリップ

投稿2017/09/07 09:40

Lara帳
こちらを参考にしています。

ArticlesController.php

<?php namespace App\Http\Controllers; use App\Article; use App\Http\Controllers\Controller; use App\Http\Requests\ArticleRequest; class ArticlesController extends Controller { public function index() { $articles = Article::all(); return view('articles.index' , compact('articles')); } public function show($id) { $article = Article::findOrFail($id); return view('articles.show' , compact('article')); } public function create() { return view('articles.create'); } public function store(Request $request) { Article::create($request->all()); return redirect( 'articles' ); } }

ArticlesRequest.php

<?php namespace App\Http\Requests; use App\Http\Requests\Request; class ArticleRequest extends Request { /** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { return true; } /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { return [ 'title' => 'required|min:3', 'body' => 'required', 'published_at' => 'required|date', ]; } }

Web.php

Route::get('/' , 'WelcomeController@index'); Route::get('contact' , 'WelcomeController@contact'); Route::get('about' , 'PagesController@about'); Route::get('articles' , 'ArticlesController@index'); Route::get('articles/create' , 'ArticlesController@create'); Route::get('articles/{id}' , 'ArticlesController@show'); Route::post('articles' , 'ArticlesController@store');

上記の通りに真似て手打ちしました。
しかし、タイトルのエラーが返ってきます。
エラー名で検索して、
terateil Q:28714
こちらに行き着きました。

私のこのエラーもオートロードができてないということなのでしょうか。
ArticlesControllerに、ArticleRequestクラスを書き足す場合どう書けばいいでしょうか?
Laravelドキュメント
のバリデーション部分を読んでみたのですが、仕様変更されたかどうかわからなかったです。
少し進んでは引っかかってしまってお手数おかけします、ご教示お願いします。

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

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

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

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

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

guest

回答2

0

5.4ではFormRequestが継承元なのでこれのほうがいいです。
5.1のRequest.phpもこれなので結局は同じことですけど。

namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class ArticleRequest extends FormRequest { }

5.4でphp artisan make:request ArticleRequestで作成すれば最初からこうだったはずです。
余計な変更して動かなくなってます。
情報が古くなってるLara帳見てるから間違えると何度でも書く。

投稿2017/09/07 10:30

kawax

総合スコア10377

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

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

退会済みユーザー

退会済みユーザー

2017/09/07 10:44

ありがとうございます。確かに、最初にmake:requestで作ったときはその中身でした。 ですが、多分他のところ打ち間違えていたのもあってFormRequestが見つからないというエラーも出ました。最終的にLara帳の見本通りに直したところ、Requestクラスが見つからない、となったのでfagaiさんの助言いただいて動作するようになったという次第です。 自分でドキュメント等々、見返すのに慣れたらこんな失敗もしなくなると思うのですが・・・。
guest

0

ベストアンサー

ArticlesControllerstoreメソッドでRequestクラスをタイプヒントに書いていますが、その名前空間にはRequestクラスが存在しないのでエラーになります。

Lara帳の方を見てみると、Requestではなく、ArticleRequestになっていますよね。
なので、storeメソッドのRequestの部分をArticleRequestにすると解決すると思います。

public function store(Request $request) ↓ public function store(ArticleRequest $request)

投稿2017/09/07 09:44

編集2017/09/07 09:50
fagai

総合スコア2158

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

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

退会済みユーザー

退会済みユーザー

2017/09/07 10:09 編集

ありがとうございます。 投稿前にその部分直し忘れていました。しかし、その部分を直すと今度は FatalErrorException Class 'App\Http\Requests\Request' not found(in ArticleRequest.php (line 7))に変わります。ArticlesControllerとArticleRequestを行ったり来たりして書き換えていたのですが投稿前の状態になってしまったんです。一つ前のステップで新規記事投稿はできています。 バリデーション部分に入ったらエラーが出てしまいました。
fagai

2017/09/07 10:19 編集

Requestクラスが存在しませんね。 途中のバージョン(5.3)からそのRequestクラスが生成されなくなったのでそういうエラーが起きます。 app/Http/Requests/Request.phpを用意しましょう。 https://github.com/laravel/laravel/blob/5.1/app/Http/Requests/Request.php こちらのソースをそのまま持ってきてください。
退会済みユーザー

退会済みユーザー

2017/09/07 10:19

いつもありがとうございます!できました。 以前のバージョンからの変更点はすべてドキュメントにまとめられているのでしょうか? 今回のこともRequestクラスが生成されなくなったから別途ファイルの用意が必要という事がわかっていれば自己解決出来たと思います・・・。お忙しいでしょうし、少しでも手を煩わせる回数を減らせればと思うので、変更点まとめられている場所がありましたら教えていただけないでしょうか。
fagai

2017/09/07 10:25 編集

全てがまとめられているわけではありませんが、大抵は https://readouble.com/laravel/5.4/ja/releases.html のリリースノートだったり、 https://readouble.com/laravel/5.2/ja/upgrade.html https://readouble.com/laravel/5.3/ja/upgrade.html https://readouble.com/laravel/5.4/ja/upgrade.html のアップグレードガイドなどをみると把握がしやすくなると思います。 表面的なディレクトリ構成とかは https://github.com/laravel/laravel のBranchがバージョンごとに切られているので、それを選択してみてどのバージョンからディレクトリが無くなってるとか確認すると良いです。
退会済みユーザー

退会済みユーザー

2017/09/07 10:47

アップデートされる度にバージョンごとのリリースノートやアップグレードガイドを見ればいいということですね!ありがとうございます。 gitのほうでの確認もがんばってできるようにします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問