Support the ongoing development of Laravel.io →
Forms Validation

This is my first time to try with laravel. Now I have a question, say now we have muiltiple jquery form validation plugins like parselyjs or others.

So if I validate the form with these jquery validation, only submit the form when js validation succeeded, do I still need to use laravel's Validator to validate the form again on server side?

I know these parselyjs validation can not validate the unique key in database, but except this kind of validation, all other validation can be done with js validation.

Is this server side validation a must process, or it's just a optional step with those js form validation?

Last updated 3 years ago.
0

and another thing is my site will not allow those browsers without cookie and javascript to view anything.

Last updated 3 years ago.
0

Yes, you MUST do the validation on the server again. The validation by javascript can be skipped easily, it just makes the user's experience better, not for security.

Last updated 3 years ago.
0

thanks a lot for this answer.

Last updated 3 years ago.
0

You can use the package Laravel 5 Javascript Validation. This package enables transparent Javascript Valditaion in your views based on JQuery Validation Plugin

This is a basic example of how to reuse your validation rules in the controller .

PostController.php

namespace App\Http\Controllers;

class PostController extends Controller {

    /**
     * Define your validation rules in a property in 
     * the controller to reuse the rules.
     */
    protected $validationRules=[
                'title' => 'required|unique|max:255',
                'body' => 'required',
    ];
    
    /**
     * Show the edit form for blog post
     * We create a JsValidator instance based on shared validation rules
     * @param  string  $post_id
     * @return Response
     */
    public function edit($post_id)
    {
        $validator = JsValidator::make($this->validationRules);
        $post = Post::find($post_id);
    
        return view('edit_post')->with([
            'validator' => $validator,
            'post' => $post
        ])    
   
    }
    
    
    /**
     * Store the incoming blog post.
     *
     * @param  Request  $request
     * @return Response
     */
    public function store(Request $request)
    {
        $v = Validator::make($request->all(), $this->validationRules]);
    
        if ($v->fails())
        {
            return redirect()->back()->withErrors($v->errors());
        }
    
        // do store stuff
    }
}

In the view you simply should print the validator object passed to the view. Remember that this package depends of JQuery and you have to include before that jsvalidation.js

edit_post.balde.php

 <div class="container">
     <div class="row">
         <div class="col-md-10 col-md-offset-1">
             <form class="form-horizontal" role="form" method="POST" action="" id="ddd">
                 <div class="form-group">
                     <label class="col-md-4 control-label">Title</label>
                     <div class="col-md-6">
                         <input type="text" class="form-control" name="title">
                     </div>
                 </div>
                 <div class="form-group">
                     <label class="col-md-4 control-label">Array</label>
                     <div class="col-md-6">
                         <textarea name="body"></textarea>
                     </div>
                 </div>
             </form>
         </div>
     </div>
 </div>
 <!-- Scripts -->
 <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
 <script src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.1/js/bootstrap.min.js"></script>
 
 <!-- Laravel Javascript Validation -->
 <script type="text/javascript" src="{{ asset('vendor/jsvalidation/js/jsvalidation.js')}}"></script>
 {!! $validator !!}
0

Hi,

I tried using JsValidator, but I get the below error. make is undefined. Can you please assist?

1/1 FatalErrorException in TestController.php line 40: 
Call to undefined method Proengsoft\JsValidation\JsValidator::make() 

Controller code is below

use Proengsoft\JsValidation\JsValidator;

public function getIndex()
{
	$validator = JsValidator::make($this->indexValidationRules);

	return view('testview')->with(['validator' => $validator]);
}
0

I am unable to get JsValidator to work. Are there any other similar packages that can be used?

0

Sign in to participate in this thread!

PHPverse

Your banner here too?

steve3d steve3d Joined 21 May 2014

Moderators

We'd like to thank these amazing companies for supporting us

Your logo here?

Laravel.io

The Laravel portal for problem solving, knowledge sharing and community building.

© 2025 Laravel.io - All rights reserved.