【发布时间】:2016-08-23 15:51:28
【问题描述】:
我的 laravel 应用程序目前有一个奇怪的问题。在随机点,我的表单提交将停止处理我的所有表单。我签入 Chrome 开发人员工具并关注网络活动,它似乎正确地完成了所有操作,但没有提交我的表单,它似乎只是刷新了页面。如果我故意犯了验证错误,它们不会显示在任何地方。如果一切正确,它只会重新加载表单为空。它只发生在表单上,我的 Ajax 请求有效。
在我将应用程序的实时版本上传到我正在开发的服务器供人们使用之后,我第一次遇到这种情况。第二天回来,发现一切正常,无需我进行任何更改。
现在又发生了,这次是在我唯一使用的开发版本上。我的任何表单都不会提交,而是刷新页面。我绝对无法弄清楚是什么原因造成的,以及为什么它似乎会随机发生并自行解决,这让我发疯了,因为在它执行此操作时我几乎无能为力。
有没有人发生过类似的事情可以帮助我解决这个问题,或者有谁知道为什么会发生这种情况?
这是我的一个请求中的一些代码,我在其中进行验证:
<?php
namespace App\Http\Requests;
use App\Http\Requests\Request;
class JobRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'project_name' => 'required',
'end_date' => 'required|date|after:yesterday',
'end_time' => array('required', 'regex:/^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/'),
'delivery_date' => 'required|date|after:yesterday',
'delivery_time' => array('required', 'regex:/^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/'),
'advisor.0' => 'min:1',
'advisor.1' => 'different:advisor.0',
'job_type' => 'min:1',
'text_other_job_type' => 'required_if:other_job_type,1',
'project_desc' => 'required',
'name_client' => 'required'
];
}
}
这是我的表单打开和提交按钮的示例:
{!! Form::open(['action' => ['JobController@store'], 'id' => 'add_project', 'method' => 'post', 'name' => 'add_project', 'files'=>true])!!}
<input type="hidden" name="edit_job" value=0>
@include('pages.job.form', ['isEdit' => false])
<div class="">
<div class="col-sm-offset-3 col-sm-7 btn_group">
<button type="submit" class="btn btn-default arrow_link_right" value="store" name="store">{{ trans('add_job.submit') }}<span ></span></button>
<button type="submit" class="btn btn-default" onclick="add_project.action='{{URL::route('storeTemplate')}}'; return true;" value="template" name="templateSub" formnovalidate>{{ trans('add_job.saveTemplate') }}</button>
<button type="button" class="btn btn-default" onclick="reset_form('add_project');" >{{ trans('add_job.reset') }}</button>
</div>
</div>
{!! Form::close()!!}
【问题讨论】:
-
你使用 CSRF 令牌吗?
-
我没有使用 Laravel 的经验,并且您没有提供任何代码或您尝试过的内容(您应该这样做),但我建议您查看正在提交的数据。可能是存在无效信息,所以整个提交都被忽略了。
-
哪个版本的 Laravel?您可以发布您的验证码吗?
-
@Mantas 是的,我使用 CSRF 令牌和 laravel 的默认检查
-
@jhmckimm 我认为发布代码没有用,因为它发生在所有表单上,即使是那些已经工作了很长时间并且我有一段时间没有进行任何更改的表单。每当我尝试提交任何有效或无效的数据时,都会发生这种情况