🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Laravel

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

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

Q&A

解決済

2回答

2142閲覧

XAMPPでLaravelのviewを表示できません(バージョン Laravel Framework 8.24.0)

ranerane0101

総合スコア70

Laravel

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

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

0グッド

0クリップ

投稿2021/01/22 14:08

編集2021/01/22 16:13

https://qiita.com/Alesion30/items/95222f62904ef46f6f45をチャレンジしています(メモ帳を作る)。http://localhost/memoApp/public/homehttp://localhost/memoApp/public/submit にアクセスできません。

エラーメッセージ

Illuminate\Contracts\Container\BindingResolutionException Target class [app\Http\Controllers\MemoController] does not exist. http://localhost/memoApp/public/home
Illuminate\Contracts\Container\BindingResolutionException Target class [app\Http\Controllers\MemoController] does not exist. http://localhost/memoApp/public/submit

↑homeとsubmit

見つからないらしいMemoController↓(初心者故コードを書く場所が自信ないので念のため、C:\xampp\htdocs\memoApp\app\Http\Controllers)

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class MemoController extends Controller { // home.blade.phpを表示 public function showHome() { return view('home'); } // submit.blade.phpを表示 public function showSubmit() { return view('submit'); } }

コントローラーに指示する役割らしいのでweb.phpも↓C:xampp\htdocs\memoApp\routes

<?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\MemoController; /* |-------------------------------------------------------------------------- | Web Routes |-------------------------------------------------------------------------- | | Here is where you can register web routes for your application. These | routes are loaded by the RouteServiceProvider within a group which | contains the "web" middleware group. Now create something great! | */ Route::get('/', function () { return view('welcome'); }); // 第一引数に相対パス、第二引数に関数を指定する Route::get('/home', [app\Http\Controllers\MemoController::class,'showHome']); Route::get('/submit', [app\Http\Controllers\MemoController::class,'showSubmit']);

試したこと
・web.phpにこのバージョンのLaraveだとuse~が無いらしいのでuseの2行を付け加えた
・元々のソースはこれだったが上記のように書き方がバージョンによって変わったらしいので試してみた

Route::get('/home', [app\Http\Controllers\MemoController::class,'showHome']); Route::get('/submit', [app\Http\Controllers\MemoController::class,'showSubmit']);

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

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

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

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

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

guest

回答2

0

ベストアンサー

まずLaravelのバージョンを明記しないと答えが出にくいと思います。おそらくLaravel8なんでしょうが。

あとは当てずっぽうですが、web.phpのappの表記が小文字になってるのが気になりました。環境(OS)によって大文字と小文字を区別する場合もあれば、区別しない場合もあるのでなんとも言えませんが。

投稿2021/01/22 14:59

AbeTakashi

総合スコア4848

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

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

ranerane0101

2021/01/22 15:29

Route::get('/home', [App\Http\Controllers\MemoController::class,'showHome']); Route::get('/submit', [App\Http\Controllers\MemoController::class,'showSubmit']); にweb.phpを変更しました。 そうしたらErrorException include(C:\xampp\htdocs\memoApp\vendor\composer/../../app/Http/Controllers/Controller.php): Failed to open stream: No such file or directory http://localhost/memoApp/public/home のエラーが出てしまいました。 なのでhttps://qiita.com/s_tatsuki/items/ed5c98ee5e55e1452ed3を見てphp artisan config:cacheを実行しました。 変わらずErrorException include(C:\xampp\htdocs\memoApp\vendor\composer/../../app/Http/Controllers/Controller.php): Failed to open stream: No such file or directory http://localhost/memoApp/public/homeこのエラーのままです。 バージョンはphp artisan --version Laravel Framework 8.24.0 でお答えとしては正しいでしょうか? 早急なコメント、ありがとうございます。
AbeTakashi

2021/01/22 15:42 編集

php artisan config:cache は.envのキャッシュなので関係ないと思います。 composer dump-autoload とか php artisan clear-compiled とか php artisan optimize とかやってみたらどうでしょう。XAMPP環境でLaravel使ったことないので自信はないですが。 もしくはControllerの方のAppを小文字にするか。とにかくこの辺が怪しい気がします。
ranerane0101

2021/01/22 16:08

Controllerの方のAppとは<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class MemoController extends Controller { // home.blade.phpを表示 public function showHome() { return view('home'); } // submit.blade.phpを表示 public function showSubmit() { return view('submit'); } } の二行目ですよね?  変えてみたらError Class "app\Http\Controllers\Controller" not found http://localhost/memoApp/public/home とエラーが出ました。 AppではClass "App\Http\Controllers\Controller" not found http://localhost/memoApp/public/home となって同じようなエラーでした。 コマンドも実行しましたが解決できませんでした。
AbeTakashi

2021/01/22 16:16

力になれなくてすいません。ただ、最初に小文字を大文字に変えてエラーメッセージが変わったので、何かしらの原因に絡んでる可能性はまだあると思います(というかエラー内容がNot Foundなので遠くはないはず)。appとAppが統一されてないのであれば、どちらかに統一されているか(どちらかが正しいかは分かりませんが)は念のため確認した方が良いかもしれません。あとは単純なスペルミスとか。 ちなみに私の環境(Linux上のLaravel6)ではディレクトリ名のみappですが、クラス名の指定はすべてAppとなっていました。
ranerane0101

2021/01/23 05:45

解決出来ました!!  ほんと何度も真摯に対応してもらい感謝しかありません。一番大きいのはデフォルトでmomoApp\app\Http\controllersにあったController.phpを自分が後から作ったファイルだと勘違いして削除してしまったことのようでした。  というのも、XAMPPのhtdocsの中にLaravelのプロジェクトファイルを入れることも理解出来ていなかったのでそういった全体像の認識不足が招いたことでした。幸い、色々試した中で削除したファイルを思い出せ、また先日XAMPPをインストールし直すときにhtdocsフォルダをバックアップしていたのでデフォルトのファイルを確認出来たことも解決の一助となってくれました。  あとは仰られたappをすべてAppに統一しました。何はともあれ本当にありがとうございました!少し概観が理解出来てきました。
guest

0

momoApp\app\Http\controllersにあったController.phpを自分が後から作ったファイルだと勘違いして削除してしまったことのようでした。
というのも、XAMPPのhtdocsの中にLaravelのプロジェクトファイルを入れることも理解出来ていなかったのでそういった全体像の認識不足が招いたことでした。幸い、色々試した中で削除したファイルを思い出せ、また先日XAMPPをインストールし直すときにhtdocsフォルダをバックアップしていたのでデフォルトのファイルを確認出来たことも解決の一助となってくれました。
あとは仰られたappをすべてAppに統一しました。

念のためweb.phpのデフォルトでは解決できないかもしれない該当箇所↓

use Illuminate\Support\Facades\Route; use App\Http\Controllers\MemoController;
Route::get('/home', [App\Http\Controllers\MemoController::class,'showHome']); Route::get('/submit', [App\Http\Controllers\MemoController::class,'showSubmit']);

投稿2021/01/23 05:49

ranerane0101

総合スコア70

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問