LoginSignup
0
0

【laravel】モデルやコントローラーのディレクトリをいじったらルーティングでつまづいた

Posted at

はじめに

Laravel6を使用しています。Userモデルは初期でApp/Httpディレクトリ直下に作成されるため、モデルが増えるとごちゃつきます。モデルだけでまとめて整理したくなってきます。

合わせてどのコントローラーがどのモデルと結びつくのかも分かりやすくしておきたくなり、それぞれ新しくディレクトリを作成することにしました。

そこでnamespaceをいじったのが全ての始まりでした。

解決方法

■ Target class [~Controller] does not exist.

新しく作ったディレクトリにモデルを移動させるだけでは、namespaceが合わなくなるためエラーを吐かれます。参考サイトはこちら

今回はHttpの中にModelsを作成し、さらにUsersを入れ子にしています。

App\Http\Models\Users\User.php
namespace App\Http\Models\Users

class User extends Authenticatable
{
 // 略
}

コントローラーもUsersディレクトリを作成しました。

App\Http\Controllers\Users\UsersController.php
namespace App\Http\Controllers\Users;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class UsersController extends Controller
{
    public function show(Request $request)
    {
        return view('profile');
    }
}

web.phpも一致させます。

routes/web.php
Route::namespace('users')->group(function () {
  Route::get('/profile', 'UsersController@show')->name('showUsers');
});

おまけ

■ Method Illuminate\Auth\SessionGuard::~ does not exist.

ログイン後のリダイレクト先の名前(HOME)も変更していたため、web.phpをいじったときに「そんなSession Guardはない」と怒られてしまいました。

RouteServiceProviderのHOMEがweb.phpに書いたものと一致するように修正しました。

Providers/RouteServiceProvider.php
class RouteServiceProvider extends ServiceProvider{
  // 略
  public const HOME = 'ここを修正';
}

終わりに

特にルーティング関係では複数のエラーが同時に出たりして「どこから手をつけよう……」と困ってしまうのですが、1つ1つ潰していくと意外とシンプルでした。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0