Laravel 9.x登录应用程序出现目标类不存在错误

3

我正在尝试创建一个登录应用程序,用于管理员面板以便轻松编辑网站的其余部分。

我有一个名为AuthController的控制器,它执行多个操作,例如登录和注销。我决定仅使用一个控制器,而不是两个不同的控制器。

当我在浏览器中输入/login时,它返回目标类[AuthController]不存在。

问题出在哪里?我缺少了什么?

web.php

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\PagesController;
use App\Http\Controllers\ContactUsFormController;
use App\Http\Controllers\AuthController;

Route::get('/', 'App\Http\Controllers\PagesController@index');
Route::get('/about', 'App\Http\Controllers\PagesController@about');
Route::get('/pricing', 'App\Http\Controllers\PagesController@pricing');
Route::get('/completed', 'App\Http\Controllers\PagesController@completed');

Route::get('/contact', [ContactUsFormController::class, 'createForm']);
Route::post('/contact', [ContactUsFormController::class, 'ContactUsForm'])->name('contact.store');


Route::get('login', array(
    'uses' => 'AuthController@showLogin'
  ));
  // route to process the form
  Route::post('login', array(
    'uses' => 'AuthController@doLogin'
  ));
  Route::get('logout', array(
    'uses' => 'AuthController@doLogout'
  ));

AuthController.php

<?php

namespace App\Http\Controllers;

use Redirect;
use Auth;
use Input;
use IlluminateSupportFacadesValidator;
use IlluminateFoundationBusDispatchesJobs;
use IlluminateRoutingController as BaseController;
use IlluminateFoundationValidationValidatesRequests;
use IlluminateFoundationAuthAccessAuthorizesRequests;
use IlluminateFoundationAuthAccessAuthorizesResources;
use IlluminateHtmlHtmlServiceProvider;

class AuthController extends Controller
  {
  public function showLogin()
    {
    // Form View
    return view('login');
    }
  public function doLogout()
    {
    Auth::logout(); // logging out user
    return Redirect::to('login'); // redirection to login screen
    }
  public function doLogin()
    {

    // Creating Rules for Email and Password
    $rules = array(

      'email' => 'required|email', // make sure the email is an actual email
      'password' => 'required|alphaNum|min:8'
      // password has to be greater than 3 characters and can only be alphanumeric and);
      // checking all field
      $validator = Validator::make(Input::all() , $rules);
      // if the validator fails, redirect back to the form
      

if ($validator->fails()){
        return Redirect::to('login')->withErrors($validator) // send back all errors to the login form
        ->withInput(Input::except('password')); // send back the input (not the password) so that we can repopulate the form
        }else{

        // create our user data for the authentication
        $userdata = array(
          'email' => Input::get('email') ,
          'password' => Input::get('password')
        );
        // attempt to do the login
        if (Auth::attempt($userdata)){
          // validation successful

          }else{
          // validation not successful, send back to form
          return Redirect::to('checklogin');
          }
        }
      }
    }

2
Route::get('login', [AuthController::class,'showLogin']) - Hassaan Ali
3个回答

3

对于 Laravel 9 及以上版本,我认为应该这样编写:

Route::get('login', 'App\Http\Controllers\AuthController@showLogin');

与其;而不是
Route::get('login', [AuthController::class,'showLogin']);

为了避免常见错误"目标类不存在",如果您输入下面的代码,则即使添加此代码也无法正常工作,并且还会返回错误。
use App\Http\Controllers\AuthController;

2

写成这样:

Route::get('login', 'App\Http\Controllers\AuthController@showLogin');

insted :

Route::get('login', array(
'uses' => 'AuthController@showLogin'));

0

清除缓存文件对我有用。 运行php artisan route:clear


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接