是否有办法在客户端使用与Laravel后端中使用的验证算法相同的验证算法。我试图在提交表单之前向用户表示验证状态。
这样,对于传递一个测试并使另一个测试失败并给最终用户不可靠信息毫无疑问。
我使用的Laravel验证方法是
$this->validate($request, [
我知道每次表单状态通过AJAX更改时我都可以将值发布到后端函数。但我猜想每次更改都会对资源消耗有所帮助,而当用户离开表单时这样做会更好但仍然有点两点。如果我错了,请纠正我。 感谢您的任何意见,感谢!
答案 0 :(得分:0)
因此,在Laravel 5中,您可以在数据进入控制器之前进行验证。
你需要做的事情:(简单例如,用于状态级别的入口验证)
在
use App\Http\Requests\Request; class StateValidationRequest 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 [ 'name' => 'Required|Regex:/^[a-zA-Z\(\)\'\.\s]+$/i|Max:100|Unique:loc_states,name,' . Request::segment(2) . ',_id', 'country' => 'Required', 'state_code' => 'alpha', 'is_active' => 'Required|Boolean', 'country_id' => 'Exists:loc_countries,_id', 'revision' => 'numeric' ]; } public function messages(){ return [ 'name.required' => 'Name is required', 'name.unique' => 'State name should be unique', 'country.required' => 'Country is required', 'state_code.alpha' => 'Code must be entirely alphabetic characters', 'name.regex' => 'Allowed characters for name are a-z (lowercase and capital), brackets \'(\' and \')\', single quote \', dot (.) and space ( )', 'is_active.required' => 'State must be set to either active or in-active', 'country_id.exists' => 'Kindly select a valid country', 'revision.numeric' => 'Revision must be numeric' ]; } }
中创建一个文件,将其命名为StateValidationRequest.php- 醇>
在里面写下这段代码:
use App\Http\Requests\Validator\StateValidationRequest;
- (最后)在您的控制器中(您需要验证的地方)
醇>
写这个(在命名空间的顶部和底部):
public function store(StateValidationRequest $stateValidator){
}
并且,这在您的商店/更新功能
中{{1}}
如果存在任何类型的验证错误,它将重定向到注册页面。如果有帮助的话,请参阅。
答案 1 :(得分:0)
您好,您可以使用parsley,例如,它是一个JS验证库。但还有其他人。我同意你的看法,每次你的用户最终填写一个字段时使用laravel验证器将是非常有资源的,所以在我看来不要这样做。
在某些情况下,做JS验证非常有效,但实施起来可能会更加困难和耗时。如果您正在处理只有很少输入字段和简单验证规则的表单,那么进行JS验证是可以的,并且它可能更加用户友好。