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

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

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

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

PHP

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

ルーティング

ルーティングとは、TCP/IPネットワークにおいて、目的のホストまでパケットを送る為のパス選定のプロセスを言います。

MAMP

Mac 上で WordPress などの動的ページのサイトが作れるように環境を構築するフリーソフト

Q&A

解決済

1回答

1035閲覧

【Laravel】ルーティングでコントローラーを通す

reirei_o121

総合スコア1

Laravel

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

PHP

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

ルーティング

ルーティングとは、TCP/IPネットワークにおいて、目的のホストまでパケットを送る為のパス選定のプロセスを言います。

MAMP

Mac 上で WordPress などの動的ページのサイトが作れるように環境を構築するフリーソフト

0グッド

0クリップ

投稿2022/06/22 10:22

【やりたいこと】
Laravelで「web.php」に「/」もしくは「/index」にアクセスされた場合、PlayersControllerのindex メソッドを呼び出すようにしたいです。

【エラー内容】

Target class [App\Http\Controllers\PlayersController] does not exist.

【コード/環境】

・LaravelプロジェクトはMAMP/htdocs配下で作成
・Laravel 8.83.16
・PHP 7.4.21

-web.php-

php

1 2<?php 3 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 17//Route::get('/', function () { 18// return view('welcome'); 19//}); 20 21Route::get('/','PlayersController@index'); 22Route::get('/index','PlayersController@index');

-RouteServiceProvider.php-

php

1<?php 2 3namespace App\Providers; 4 5use Illuminate\Cache\RateLimiting\Limit; 6use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider; 7use Illuminate\Http\Request; 8use Illuminate\Support\Facades\RateLimiter; 9use Illuminate\Support\Facades\Route; 10 11class RouteServiceProvider extends ServiceProvider 12{ 13 /** 14 * The path to the "home" route for your application. 15 * 16 * This is used by Laravel authentication to redirect users after login. 17 * 18 * @var string 19 */ 20 public const HOME = '/home'; 21 22 /** 23 * The controller namespace for the application. 24 * 25 * When present, controller route declarations will automatically be prefixed with this namespace. 26 * 27 * @var string|null 28 */ 29 protected $namespace = 'App\\Http\\Controllers'; 30 31 /** 32 * Define your route model bindings, pattern filters, etc. 33 * 34 * @return void 35 */ 36 public function boot() 37 { 38 $this->configureRateLimiting(); 39 40 $this->routes(function () { 41 Route::prefix('api') 42 ->middleware('api') 43 ->namespace($this->namespace) 44 ->group(base_path('routes/api.php')); 45 46 Route::middleware('web') 47 ->namespace($this->namespace) 48 ->group(base_path('routes/web.php')); 49 }); 50 } 51 52 /** 53 * Configure the rate limiters for the application. 54 * 55 * @return void 56 */ 57 protected function configureRateLimiting() 58 { 59 RateLimiter::for('api', function (Request $request) { 60 return Limit::perMinute(60)->by(optional($request->user())->id ?: $request->ip()); 61 }); 62 } 63}

-Controller.php-

php

1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Foundation\Auth\Access\AuthorizesRequests; 6use Illuminate\Foundation\Bus\DispatchesJobs; 7use Illuminate\Foundation\Validation\ValidatesRequests; 8use Illuminate\Routing\Controller as BaseController; 9 10class Controller extends BaseController 11{ 12 use AuthorizesRequests, DispatchesJobs, ValidatesRequests; 13} 14 15class PlayersController extends Controller{ 16 17 function index(){ 18 echo 'test'; 19 } 20}

【やったこと】
原因はルーティングの記載方法、Laravelの不具合、スペルミスを疑い、以下の3つのことを行いました。

・web.phpでのルーティングの記述方法をいろいろ試す
(場合に応じてRouteServicePrivider.phpのprotected $namespace = 'App\Http\Controllers';をコメントアウトにする)

php

1use App\Http\Controllers\PlayersController;

php

1Route::get('/', [PlayersController::class, 'index']);

php

1Route::get('/', [ App\Http\Controllers\PlayersController::class, 'index'] );

php

1Route::get('/', 'App\Http\Controllers\PlayersController@index' );

・Laravelのキャッシュクリア、クラス再結成、パッケージ再インストール

zsh

1php artisan cache:clear 2php artisan config:clear 3php artisan route:clear 4php artisan view:clear 5php artisan event:clear 6php artisan clear-compiled 7 8composer dump-autoload 9 10composer install

・スペルミスを探す

上記のことを行ってもエラー解決につながらず、自分ではもう考えられる原因などがわからないのでどなたかご教授いただきたいです。
よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

クラスをオートロードする都合上、PlayersControllerPlayersController.phpというファイルに書かなければ認識してもらえないのではないでしょうか。

投稿2022/06/22 12:43

編集2022/06/22 12:49
maisumakun

総合スコア145064

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

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

reirei_o121

2022/06/22 12:53

Controller.phpでクラス名を記述すれば、コントローラーができるという浅薄な考えでした。 php artisan make:controllerでコントローラーを作成し、無事ルーティングもできました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問