每当我以访客身份重定向时,都会收到错误消息:
缺少 [Route: login] [URI: {locale}/login] 的必需参数。
但是当我登录时它工作正常。这是我的 web.php 和 HomeController
网页.php
Route::get('/', function() {
return redirect(app()->getLocale());
});
Route::group(['prefix' => '{locale}', 'where' => ['locale' => '[a-zA-Z]{2}'], 'middleware' => 'setlocale'], function () {
Route::get('/', function () {
return view('welcome');
})->name('main');
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
//Customers
Route::get('/customers', 'CustomerController@showcust')->name('customers');
Route::post('/sendcust', 'CustomerController@sendcust')->name('sendcust');
//Items
Route::get('/items', 'ItemController@showitems')->name('items');
Route::post('/senditem', 'ItemController@senditem')->name('senditem');
//Projects
Route::get('/projects', 'ProjectController@showprojects')->name('projects');
Route::post('/sendproj', 'ProjectController@sendproj')->name('sendproj');
//ProjectBillings
Route::get('/projects/{id}/billings', 'ProjectController@showbilling');
Route::post('/projects/{id}', 'ProjectController@addbilling')->name('addbilling');
Route::get('/invoices', 'InvoiceController@showinvoice')->name('invoices');
Route::post('/sendinvoitem', 'InvoiceController@sendinvoitem')->name('sendinvoitem');
Route::get('/invoices/{id}/details', 'InvoiceController@showdetails');
Route::post('/updateitem','InvoiceController@updatedetail')->name('updateitem');
Route::get('invoices/{id}/generate', 'InvoiceController@generate');
Route::post('/updatestatus', 'InvoiceController@changestatus')->name('updatestatus');
});
Run Code Online (Sandbox Code Playgroud)
家庭控制器.php
public function index()
{
if(Auth::guest()){
return redirect(app()->getLocale());
}
else{
return view('admin.home');
}
}
Run Code Online (Sandbox Code Playgroud)
问题出在您的App\Http\Middleware\Authenticate
中间件上。
您的登录路由需要一个locale
参数 - 但是当您以访客身份访问需要身份验证的页面时,Authenticate
将调用中间件。
默认情况下,Authenticate
中间件包含:
protected function redirectTo($request)
{
if (! $request->expectsJson()) {
return route('login');
}
}
Run Code Online (Sandbox Code Playgroud)
您需要将所需的参数传递给路由:
return route('login', ['locale' => $desiredLocale])
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2789 次 |
最近记录: |