【问题标题】:Getting errors while submitting the form in laravel 5.5在 laravel 5.5 中提交表单时出错
【发布时间】:2018-02-14 20:03:29
【问题描述】:

我一个接一个地遇到 2 个错误。

在提交表单时,我收到以下错误

页面由于不活动而过期。请刷新并重试。

还是这个错误

无效参数异常

路由 [注册/用户/图像] 未定义。

我已经交叉检查了一切无法找出真正的原因。

Routes/web.php

Route::get('/', function () {
   return view('welcome');
});

Auth::routes();

Route::prefix('manage')->middleware('role:superadministrator|administrator|editor|member')->group(function() {
   Route::get('/', 'ManageController@index');
   Route::get('/carezone', 'ManageController@carezone')->middleware('role:superadministrator|administrator')->name('manage.dashboard');
   Route::get('/dashboard', 'ManageController@dashboard')->name('manage.dashboard');
});


Route::middleware('role:superadministrator|administrator|editor|member|subscriber')->group(function() {
  
   Route::get('register/user/details', 'RegisterUserController@showUserDetailsForm')->name('register.user.details');
   
   Route::post('register/user/details', 'RegisterUserController@postUserDetailsForm')->name('register.user.details');
   
   Route::get('/api/username/unique', 'RegisterUserController@apiCheckUniqueUserName')->name('api.username.unique');
   
   Route::get('register/user/image', 'RegisterUserController@showUserImageForm')->name('register.user.image');
 
   Route::post('register/user/image', 'RegisterUserController@postUserImageForm')->name('register.user.image');
});

   
Route::get('/email/unique', 'RegisterUserController@checkUniqueEmail')->name('email.unique');
  
Route::get('/get/city', 'RegisterUserController@ajaxGetCity')->name('get.city');

Route::get('/registration', 'RegisterUserController@showRegistrationForm')->name('registration');
Route::get('/home', 'HomeController@index')->name('home');

RegisterUserController.php

       /*function to redirect user to user details page after register page*/
   public function showUserDetailsForm() {
      $states = State::all();
      return view('pages.registration.registerUserDetails', ['states'=> $states]);
   }

   /*function to post and save data to the database*/
   public function postUserDetailsForm(Request $request) {
      $validatedData = $request->validate([
         'username' => 'required|alpha_num|min:6|max:20|unique:details,username',
         'dob'      => 'required|date',
         'gender'   => 'required|string',
         'state'    => 'required|numeric',//validation rule for max min values
         'city'     => 'required|numeric',//validation rule for max min values
      ]);

      $post = new Detail;
      $post->user_id = Auth::user()->id;
      $post->username = $request->username;
      $post->dob = $request->dob;
      $post->gender = $request->gender;
      $post->state_id = $request->state;
      $post->city_id = $request->city;
      $post->save();
      return redirect()->route('register/user/image');
   }

我的表单的一小部分

<form id="registerUserDetails" class="form-horizontal clearfix" method="POST" action="{{ route('register.user.details') }}" role="form" novalidate>
{{ csrf_field() }}
.
.
.
.
<button type="submit" class="tabButton">Next</button>
</form>
<script>Javascript Validation here</script>

【问题讨论】:

  • 在进行it is all yours 建议的更改后,您遇到了哪些错误?
  • @PeymanSeraj,我现在没有更改任何内容,因为我的页面中已经包含 csrf 并且表单的路径是正确的。
  • expired due to inactivity 错误以足够清晰的方式解释了问题,并暗示您的 CSRF 令牌在一段时间后已过期。很可能包含表单的页面在浏览器中保持打开状态,并在令牌过期后提交。这可以通过增加会话生存期(如果可以接受)或在令牌已过期时在页面中显示警告(如果页面中的令牌仍然与会话中的一个)。

标签: laravel routes laravel-5.5


【解决方案1】:

要解决第二个错误,您必须在控制器方法(以及任何地方)上修复您的路由名称:

实际:

return redirect()->route('register/user/image');

正确:

return redirect()->route('register.user.image');

【讨论】:

【解决方案2】:

为解决第一个错误添加csrf字段{{ csrf_field() }}形成

对于第二个,你的路由名称是 register.user.image

所以像这样设置表单的动作

<form action=" {{ route('register.user.image') }} "> 

【讨论】:

  • csrf 字段已添加。该表单用于 register.user.details,提交时会将用户重定向到 register.user.image 页面,但每次都会出错。
猜你喜欢
  • 1970-01-01
  • 2019-05-04
  • 2018-06-22
  • 2016-01-16
  • 2018-09-16
  • 2021-07-30
  • 2018-04-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多