我在尝试从登录控制器中创建的方法传递变量以将其传递到刀片文件时遇到问题 - 当按登录按钮查看登录用户的 id 时,尝试以用户身份为他打开受限区域,而其他人则不能查看其他用户的页面或区域
尝试通过紧凑的 hellper 方法将登录方法中的变量 $userDataa 从 LoginController 发送到 balde 文件 Home.blade.php,但在登录时显示未定义的变量 $userDataa 尝试在 Blade 文件 {{$userDataa} 中回显它}
//loginController
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
use Illuminate\Validation\Validator;
use App\Models\User;
class LoginController extends Controller
{
/*
|--------------------------------------------------------------------------
| Login Controller
|--------------------------------------------------------------------------
|
| This controller handles authenticating users for the application and
| redirecting them to your home screen. The controller uses a trait
| to conveniently provide its functionality to your applications.
|
*/
use AuthenticatesUsers;
/**
* Where to redirect users after login.
*
* @var string
*/
protected $redirectTo = RouteServiceProvider::HOME;
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest')->except('logout');
}
public function login(Request $request)
{
$input = $request->all();
$this->validate($request,[
'email'=>'required|email',
'password'=>'required'
]);
if(auth()->attempt(array('email'=>$input['email'],'password'=>$input['password'])))
{
if(auth()->user()->is_admin==1)
{
$id =auth()->user()->id;
$userDataa=User::find($id);
return redirect()->route('admin.home');
}else{
$id =auth()->user()->id;
$userDataa=User::find($id);
return view ('home',compact('userDataa'));
//return redirect()->route('home');
}
}else{
return redirect()->route('login')->with('error','يجب إدخال كل الحقول بشكل صحيح');
}
}
}
//homeController
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
class HomeController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth');
}
/**
* Show the application dashboard.
*
* @return \Illuminate\Contracts\Support\Renderable
*/
public function index()
{
return view('home');
}
public function adminhome()
{
return view('adminhome');
}
}
//theBlade file
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">{{ __('Dashboard') }}</div>
<div class="card-body">
@if (session('status'))
<div class="alert alert-success" role="alert">
{{ session('status') }}
</div>
@endif
@if (session('error'))
<div class="alert alert-danger" role="alert">
{{ session('error') }}
</div>
@endif
<h3>Welcome in your Area </h3>
{{$userDataa->name}}
{{ __('You are logged in!') }}
</div>
</div>
</div>
</div>
</div>
@endsection
//rout file
<?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 and all of them will
| be assigned to the "web" middleware group. Make something great!
|
*/
Route::get('/', function () {
return view('welcome');
});
Auth::routes();
Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
Route::get('/admin/home', [App\Http\Controllers\HomeController::class, 'adminhome'])->name('admin.home')->middleware('is_admin');
//model file
<?php
namespace App\Models;
// use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens, HasFactory, Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array<int, string>
*/
protected $fillable = [
'name',
'email',
'password',
'is_admin',
];
/**
* The attributes that should be hidden for serialization.
*
* @var array<int, string>
*/
protected $hidden = [
'password',
'remember_token',
];
/**
* The attributes that should be cast.
*
* @var array<string, string>
*/
protected $casts = [
'email_verified_at' => 'datetime',
'password' => 'hashed',
];
}
您尝试过使用
Auth
门面或 auth
助手吗?像这样
Auth::user()->name
或auth()->user()->name
。在验证用户身份后,您不必将其手动传递到刀片文件。