首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >目标类[App\Http\Controller\Auth\LoginController]不存在

目标类[App\Http\Controller\Auth\LoginController]不存在
EN

Stack Overflow用户
提问于 2022-05-30 17:43:13
回答 1查看 527关注 0票数 0

我正在使用Laravel9,试图分离前端和后端。我做了很多替换,比如app\Http更改为app\前端\Http或app\Backend\Http。

我以前做过分离,成功了。现在我不能登录或退出。但欢迎页面没问题。也许这是因为路线文件?

代码语言:javascript
复制
Auth::routes();

路由/web.php的所有内容

代码语言:javascript
复制
<?php

use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| 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::group( 
    [ 
    'prefix' => LaravelLocalization::setLocale(), 
    'middleware' => [ 'localeSessionRedirect', 'localizationRedirect', 'localeViewPath' ], 
    ], function() 
{ 
    Route::get('/', function () {
        return view('welcome');
    });

    Auth::routes();

    Route::get('/home', [App\Frontend\Http\Controllers\HomeController::class, 'index'])->name('home');
});

我也这样做了:

代码语言:javascript
复制
composer dump-autoload
php artisan clear-compiled
php artisan route:clear
php artisan cache:clear

不起作用。

LoginController

代码语言:javascript
复制
<?php

namespace App\Frontend\Http\Controllers\Auth;

use App\Frontend\Http\Controllers\Controller;
use App\Frontend\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\AuthenticatesUsers;

class LoginController extends Controller
...
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-30 18:38:01

laravel/ui包的Auth路由是在AuthRouteMethods类中硬编码的。这是它的方法的零件,它来自Github存储库。

代码语言:javascript
复制
$namespace = class_exists($this->prependGroupNamespace('Auth\LoginController')) ? null : 'App\Http\Controllers';
$this->group(['namespace' => $namespace], function() use($options) {
     // Login Routes...
     if ($options['login'] ?? true) {
        $this->get('login', 'Auth\LoginController@showLoginForm')->name('login');
        $this->post('login', 'Auth\LoginController@login');
     } 

// more code

它确保Auth路由将位于Theme\Http\Controllers的“默认”命名空间之下。但是,如果将它包装在一个组中,您可以更改它,如

代码语言:javascript
复制
Route::group(['namespace' => 'App\Frontend\Http\Controllers'], function () {
  Auth::routes();
});

这样,您就可以在它前面加上组命名空间,这样包就可以为每个其他auth控制器找到App\Frontend\Http\Controllers\Auth\LoginController类等等。

Note 1 -所有控制器都应该在Auth命名空间下,并按照包中定义的具体名称命名,您不能将其更改为与App\Whatever\LoginControllerAuth\Whatever\Auth\MyLoginController类似,但可以使用App\Whatever\Auth\LoginController来实现。

Note 2 --这将不适用于RouteServiceProvider类中未注释的protected $namespace = 'App\\Http\\Controllers';属性,因为它将两次在名称空间前面(您将得到类似于App\Http\Controllers\App\Frontend\Http\Controllers\Auth\LoginController的内容)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72438223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档