Laravel重定向在iframe中的post路由映射的控制器函数中不起作用



我试图将页面重定向到一些路由,重定向是在一个接收表单数据并处理它的方法中应用的。现在,如果数据经过身份验证,应用程序现在必须重定向到主页,问题是主页加载在框架内,我指定了它的表单要针对。我需要整个应用程序重定向到主。这里是代码控制器:

<?php
namespace AppHttpControllersadmin;
use AppModelsadminAdmins;
use IlluminateFoundationAuthAccessAuthorizesRequests;
use IlluminateFoundationBusDispatchesJobs;
use IlluminateFoundationValidationValidatesRequests;
use IlluminateRoutingController as BaseController;
use IlluminateSupportFacadesRedirect;
use IlluminateSupportFacadesURL;
class Account extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
public function login(){
if(session() ->exists('admin')){
return redirect(URL::to('/').'/admin/main');
}
return view('admin/login');
}
public function dologin(){
$email = request()->email;
$pass = request()->password;
$admin = new Admins();
$admin_data = $admin -> getAdmin($email);
if($admin_data <> null){
if(md5($pass) === $admin_data -> password){
session() -> put('admin' ,array('admin_id' => $admin_data -> id ,
'admin_name' => $admin_data -> name ,
'admin_email' => $admin_data -> email ,
'admin_mobile' => $admin_data -> mobile));
Redirect::to(URL::to('/').'/admin/main');
}else{
return json_encode(array('succ' => false ,'cause' => 'خطأ في اسم المستخدم أو كلمة المرور'));
}
}else{
return json_encode(array('succ' => false ,'cause' => 'لم يتم العثور على البريد الإلكتروني'));
}
}
public function main(){
if(session() ->exists('admin')) {
return view('admin.main');
}
return redirect(URL::to('/').'/admin/login');
}
}

和我的表单视图,与iframe隐藏在上面:

<iframe class="d-flex w-100 d-none" id="admin-login" name="admin-login"></iframe>
<form class="form w-100 fv-plugins-bootstrap5 fv-plugins-framework" novalidate="novalidate" id="login-form" target="admin-login" method="post" action="{{route('admin.dologin')}}">
@csrf
<!--begin::Heading-->
<div class="text-center mb-10">
<!--begin::Title-->
<h1 class="mb-3 color-annay-gray">سجل الدخول</h1>
</div>
<!--begin::Heading-->
<!--begin::Input group-->
<div class="fv-row mb-10 fv-plugins-icon-container">
<!--begin::Label-->
<label class="form-label fs-6 fw-bolder color-annay-gray">البريد الإلكتروني</label>
<!--end::Label-->
<!--begin::Input-->
<input class="form-control form-control-lg form-control-solid" type="text" name="email" autocomplete="off">
<!--end::Input-->
<div class="fv-plugins-message-container invalid-feedback"></div></div>
<!--end::Input group-->
<!--begin::Input group-->
<div class="fv-row mb-10 fv-plugins-icon-container">
<!--begin::Wrapper-->
<div class="d-flex flex-stack mb-2">
<!--begin::Label-->
<label class="form-label fw-bolder fs-6 mb-0 color-annay-gray">كلمة المرور</label>
<!--end::Label-->
<!--begin::Link-->
<a href="{{URL::to('/').'/admin/resetpass'}}" class="link-primary fs-6 fw-bolder colo-main">نسيت كلمة المرور ؟</a>
<!--end::Link-->
</div>
<!--end::Wrapper-->
<!--begin::Input-->
<input class="form-control form-control-lg form-control-solid" type="password" name="password" autocomplete="off">
<!--end::Input-->
<div class="fv-plugins-message-container invalid-feedback"></div></div>
<!--end::Input group-->
<!--begin::Actions-->
<div class="text-center">
<!--begin::Submit button-->
<button type="submit" id="sign_in_submit" class="btn btn-lg w-100 mb-5 annay-admin-btn">
<span class="indicator-label">دخول</span>
<span class="indicator-progress"> - الرجاء الانتظار ...
<span class="spinner-border spinner-border-sm align-middle ms-2"></span></span>
</button>
<!--end::Submit button-->
<!--begin::Separator-->
</div>
<!--end::Actions-->
<div class="color-error-msg"></div>
</form>

这是我的路线

<?php
use AppHttpControllersadminAccount;
use AppHttpControllerscustomerClassesController;
use AppHttpControllerscustomerItemsController;
use AppHttpControllerscustomerOrdersController;
use IlluminateSupportFacadesRoute;
use IlluminateSupportFacadesURL;

/*
|--------------------------------------------------------------------------
| 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::group(['prefix' => 'customer', 'as' => 'customer.'], function () {
Route::get('/classes/{id}', [ClassesController::class, 'show'])->name('classes');
Route::get('/items/{id}', [ItemsController::class, 'show'])->name('items');
Route::get('/item/{id}', [ItemsController::class, 'item'])->name('item');
Route::get('/order/{id}', [OrdersController::class, 'order'])->name('order');
});
Route::group(['prefix' => 'admin', 'as' => 'admin.'], function () {
Route::get('/' ,[Account::class, 'login']);
Route::get('/login', [Account::class, 'login'])->name('login');
Route::post('/dologin', [Account::class, 'dologin'])->name('dologin');
Route::get('/main', [Account::class, 'main'])->name('main');
});

试试这个:返回重定向()→路线("admin.login");

Tryreturn redirect("admin/main")不必使用Url::to()。重定向将匹配您的web.php中的url。或者您可以使用redirect()->route("here your route name")

最新更新