Class“\App\Models\Admin”在尝试登录或注册管理员时未发现错误,部署 Hostinger Cpanel,本地主机工作正常
Class "\App\Models\Admin" not found getting error when trying to login or register admin, deploying Hostinger Cpanel, Local host working fine
我正在 hostinger cpanel 上部署一个 laravel9 项目,在部署和借出页面之前一切都很好,但是当尝试注册新用户或登录用户时,遇到以下共享错误,幸运的是在注册过程中数据保存在数据库中,但仪表板加载时出现以下共享错误:
Class“\App\Models\Admin”在应用程序中未找到 / Http /⟩Controllers /Admin /⟩AdminController.php :⟩109
以下代码供您参考:
AdminController.php
文件夹路径:
app\Http\Controllers\Admin\AdminController.php
<?php
namespace App\Http\Controllers\Admin;
use App\Providers\RouteServiceProvider;
//use Closure;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Models\Admin;
use Illuminate\Support\Facades\Hash;
class AdminController extends Controller
{
//
function log(Request $request)
{
$user= Admin::where('email', $request->email)->first();
// print_r($data);
if (!$user || !Hash::check($request->password, $user->password)) {
return response([
'message' => ['These credentials do not match our records.']
], 404);
}
$token = $user->createToken('my-app-token')->plainTextToken;
$response = [
'user' => $user,
'token' => $token
];
return response($response, 201);
}
public function index()
{
return Admin::all();
}
public function store(Request $request)
{
$request->validate([
'name'=> 'required',
'type'=> 'required',
'vendor_id'=>'required',
'email'=> 'required'
]);
return Admin::create($request->all());
}
public function show($id)
{
//return Admin::find($type);
return Admin::where('name',$id)->get();
}
public function update(Request $request, $id)
{
$product= Admin::find($id);
$product->update($request->all());
$result=$product->save();
if($result)
{
return ['result'=>'Data has been updated'];
}
else
{
return ['result'=>'update operation has been failed'];
}
return $product;
}
public function delete($id)
{
$product= Admin::find($id);
$result=$product->delete();
//$result=$product->save();
if($result)
{
return ['result'=>'Data has been deleted'];
}
else
{
return ['result'=>'update operation has been failed'];
}
return $product;
}
public function dashboard(){
return view('admin/dashboard');
}
public function addadminuser(){
return view('admin/users/add_admin_user');
}
public function updateadminpassword(){
//echo"<pre>"; print_r(Auth::guard('admin')->user());die;
$adminDetails = Admin::where('email',Auth::guard('admin')->user()->email)->first()->toArray();
return view('admin.settings.update_admin_password')->with(compact('adminDetails'));
}
public function login(Request $request){
if($request->isMethod('post')){
$data = $request->all();
echo "<pre>"; print_r($data); die;
$validated = $request->validate([
'email' => 'required|email|max:255',
'password' => 'required',
]);
if(Auth::guard('admin')->attempt(['email'=>$data['email'],'password'=>$data['password'],'status'=>1])){
return redirect('admin/dashboard');
}else{
return redirect()->back()->with('error_message','Invalid Email or Password');
}
}
return view('admin/login');
}
public function logout (){
Auth::guard('admin')->logout();
return redirect('admin/login');
}
}
admin.php
文件夹路径:app\Models\admin.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
class Admin extends Authenticatable
{
use HasApiTokens,HasFactory,Notifiable;
protected $guard = 'admin';
protected $fillable=[
'name',
'type',
'vendor_id',
'email',
'password',
'mobile',
'image',
'status'
];
};
Error Screenshot-1
Error Screenshot of Line No.Highlighted
注意:相同的条件在本地主机上运行良好,仅在 Hostinger 共享主机部署时出错,我们将不胜感激。
添加的路线:
<?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::get('/', function () {
return view('welcome');
});
Route::get('/dashboard', function () {
return view('dashboard');
})->middleware(['auth'])->name('dashboard');
require __DIR__.'/auth.php';
Route::prefix('/admin')->namespace('App\Http\Controllers\Admin')->group(function(){
// Admin Login Route
Route:: match(['get','post'],'login','AdminController@login');
Route::group(['middleware'=>['admin']], function(){
// Admin Dasboard Route
Route:: get('dashboard','AdminController@dashboard');
// Update Admin Password
Route::match(['get','post'],'update-admin-password','AdminController@updateadminpassword');
// Add Admin User
Route::get('add-admin-user','AdminController@addadminuser');
//Admin Logout
Route::get('logout','AdminController@logout');
});
});
将 admin.php 重命名为 Admin.php,作为 Psr4(Autoloader)指示
必须以 case-sensitive 方式引用所有 class 名称。
Laravel 期望以 PascalCase
加载所有 classes
https://www.php-fig.org/psr/psr-4/
https://dev.to/dalelantowork/php-laravel-8-best-naming-conventions-for-apis-23i0
我正在 hostinger cpanel 上部署一个 laravel9 项目,在部署和借出页面之前一切都很好,但是当尝试注册新用户或登录用户时,遇到以下共享错误,幸运的是在注册过程中数据保存在数据库中,但仪表板加载时出现以下共享错误:
Class“\App\Models\Admin”在应用程序中未找到 / Http /⟩Controllers /Admin /⟩AdminController.php :⟩109
以下代码供您参考:
AdminController.php
文件夹路径: app\Http\Controllers\Admin\AdminController.php
<?php
namespace App\Http\Controllers\Admin;
use App\Providers\RouteServiceProvider;
//use Closure;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Models\Admin;
use Illuminate\Support\Facades\Hash;
class AdminController extends Controller
{
//
function log(Request $request)
{
$user= Admin::where('email', $request->email)->first();
// print_r($data);
if (!$user || !Hash::check($request->password, $user->password)) {
return response([
'message' => ['These credentials do not match our records.']
], 404);
}
$token = $user->createToken('my-app-token')->plainTextToken;
$response = [
'user' => $user,
'token' => $token
];
return response($response, 201);
}
public function index()
{
return Admin::all();
}
public function store(Request $request)
{
$request->validate([
'name'=> 'required',
'type'=> 'required',
'vendor_id'=>'required',
'email'=> 'required'
]);
return Admin::create($request->all());
}
public function show($id)
{
//return Admin::find($type);
return Admin::where('name',$id)->get();
}
public function update(Request $request, $id)
{
$product= Admin::find($id);
$product->update($request->all());
$result=$product->save();
if($result)
{
return ['result'=>'Data has been updated'];
}
else
{
return ['result'=>'update operation has been failed'];
}
return $product;
}
public function delete($id)
{
$product= Admin::find($id);
$result=$product->delete();
//$result=$product->save();
if($result)
{
return ['result'=>'Data has been deleted'];
}
else
{
return ['result'=>'update operation has been failed'];
}
return $product;
}
public function dashboard(){
return view('admin/dashboard');
}
public function addadminuser(){
return view('admin/users/add_admin_user');
}
public function updateadminpassword(){
//echo"<pre>"; print_r(Auth::guard('admin')->user());die;
$adminDetails = Admin::where('email',Auth::guard('admin')->user()->email)->first()->toArray();
return view('admin.settings.update_admin_password')->with(compact('adminDetails'));
}
public function login(Request $request){
if($request->isMethod('post')){
$data = $request->all();
echo "<pre>"; print_r($data); die;
$validated = $request->validate([
'email' => 'required|email|max:255',
'password' => 'required',
]);
if(Auth::guard('admin')->attempt(['email'=>$data['email'],'password'=>$data['password'],'status'=>1])){
return redirect('admin/dashboard');
}else{
return redirect()->back()->with('error_message','Invalid Email or Password');
}
}
return view('admin/login');
}
public function logout (){
Auth::guard('admin')->logout();
return redirect('admin/login');
}
}
admin.php 文件夹路径:app\Models\admin.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
class Admin extends Authenticatable
{
use HasApiTokens,HasFactory,Notifiable;
protected $guard = 'admin';
protected $fillable=[
'name',
'type',
'vendor_id',
'email',
'password',
'mobile',
'image',
'status'
];
};
Error Screenshot-1
Error Screenshot of Line No.Highlighted
注意:相同的条件在本地主机上运行良好,仅在 Hostinger 共享主机部署时出错,我们将不胜感激。
添加的路线:
<?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::get('/', function () {
return view('welcome');
});
Route::get('/dashboard', function () {
return view('dashboard');
})->middleware(['auth'])->name('dashboard');
require __DIR__.'/auth.php';
Route::prefix('/admin')->namespace('App\Http\Controllers\Admin')->group(function(){
// Admin Login Route
Route:: match(['get','post'],'login','AdminController@login');
Route::group(['middleware'=>['admin']], function(){
// Admin Dasboard Route
Route:: get('dashboard','AdminController@dashboard');
// Update Admin Password
Route::match(['get','post'],'update-admin-password','AdminController@updateadminpassword');
// Add Admin User
Route::get('add-admin-user','AdminController@addadminuser');
//Admin Logout
Route::get('logout','AdminController@logout');
});
});
将 admin.php 重命名为 Admin.php,作为 Psr4(Autoloader)指示
必须以 case-sensitive 方式引用所有 class 名称。
Laravel 期望以 PascalCase
加载所有 classeshttps://www.php-fig.org/psr/psr-4/
https://dev.to/dalelantowork/php-laravel-8-best-naming-conventions-for-apis-23i0