{"flag":true,"single":true,"pageTitle":"Laravel Validation And Repopulating Forms (form values preserve in view ), GET and Post requests","post":{"id":15,"user_id":"1","slug":"laravel-validation-and-repopulating-forms-form-values-preserve-in-view--57so","title":"Laravel Validation And Repopulating Forms (form values preserve in view ), GET and Post requests","body":"<p><strong>Laravel Validation<\/strong> is a feature of the Laravel framework that provides a convenient way to validate incoming data from HTTP requests, form submissions, or any other data source. Validation is an important part of any web application, as it helps ensure that user input is correct and meets certain requirements before it is processed or stored. Here is an example<\/p>\r\n<p>1. Make Route ie<\/p>\r\n<pre class=\"language-markup\"><code>Route::post('\/insertdata', [insertdata::class, 'insertdata'])-&gt;name(\"insertdata\");<\/code><\/pre>\r\n<p><strong>In Controller<\/strong><\/p>\r\n<pre class=\"language-markup\"><code>public function insertdata(Request $request)\r\n    {\r\n        $validated = $request-&gt;validate([\r\n           'title' =&gt; 'required',\r\n       ]);\r\n       \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ OR\r\n        $validated = $request-&gt;validate([\r\n            'email' =&gt; 'required',\r\n        ], [\r\n            'email.required' =&gt; 'Please provide your email address.',\r\n        ]);\r\n\r\n    }<\/code><\/pre>\r\n<p>In view<\/p>\r\n<pre class=\"language-markup\"><code>@if ($errors-&gt;any())\r\n    &lt;div class=\"alert alert-danger\"&gt;\r\n        &lt;ul&gt;\r\n            @foreach ($errors-&gt;all() as $error)\r\n                &lt;li&gt;{{ $error }}&lt;\/li&gt;\r\n            @endforeach\r\n        &lt;\/ul&gt;\r\n    &lt;\/div&gt;\r\n@endif\r\n\r\n&lt;form method=\"post\" action=\"{{ route('insertdata') }}\"&gt;\r\n   &lt;input type=\"text\" name=\"title\"&gt;\r\n&lt;input type=\"submit\" value=\"submit\"&gt;\r\n&lt;\/form&gt;\r\n\r\n<\/code><\/pre>\r\n<p>It will display error if we leave empty title<\/p>\r\n<p>&nbsp;<\/p>\r\n<p><strong>ERROR DIRECTIVE:&nbsp;<\/strong><\/p>\r\n<p>In Laravel, the <strong>@error directive<\/strong> is a Blade directive that is used to display validation error messages in a view. The @error directive is used in combination with the -&gt;withErrors() method of the Validator class to pass validation error messages to the view.<\/p>\r\n<p>Now if we want to get class inside input we use error blade directive. If we leave title is empty class <strong>is-invalid<\/strong> is added.<\/p>\r\n<pre class=\"language-markup\"><code>&lt;form method=\"post\" action=\"{{ route('insertdata') }}\"&gt;\r\n   &lt;input type=\"text\" name=\"title\" class=\"@error('title') is-invalid @enderror\"&gt;\r\n&lt;input type=\"submit\" value=\"submit\"&gt;\r\n&lt;\/form&gt;\r\n\r\n<\/code><\/pre>\r\n<p>We can also set div below input field to show better error text&nbsp;<\/p>\r\n<pre class=\"language-markup\"><code>&lt;form method=\"post\" action=\"{{ route('insertdata') }}\"&gt;\r\n   &lt;input type=\"text\" name=\"title\" class=\"@error('title') is-invalid @enderror\"&gt;\r\n@error('review_title')\r\n     &lt;div class=\"alert alert-danger\"&gt;{{ $errors-&gt;first('review_title') }}&lt;\/div&gt;\r\n@enderror\r\n\r\n&lt;input type=\"submit\" value=\"submit\"&gt;\r\n&lt;\/form&gt;<\/code><\/pre>\r\n<p><strong>Determining If Messages Exist For A Field<\/strong><\/p>\r\n<pre class=\"language-markup\"><code>if ($errors-&gt;has('email')) {\r\n    \/\/\r\n}<\/code><\/pre>\r\n<p><strong>Loop errors<\/strong><\/p>\r\n<pre class=\"language-markup\"><code>foreach ($errors-&gt;all() as $message) {\r\n    \/\/\r\n}<\/code><\/pre>\r\n<p><strong>Repopulating Forms<\/strong><\/p>\r\n<p>framework flash all of the request's input to the session if redirect occure. To retrieve use&nbsp; old method on an instance of Illuminate\\Http\\Request.&nbsp;<\/p>\r\n<p>$title = $request-&gt;old('title');<\/p>\r\n<pre class=\"language-markup\"><code>&lt;input type=\"text\" name=\"title\" value=\"{{ old('title') }}\"&gt;<\/code><\/pre>\r\n<p><strong>Nullable validation rule:<\/strong><\/p>\r\n<pre class=\"language-markup\"><code>'publish_at' =&gt; 'nullable|date',<\/code><\/pre>\r\n<p>it may be either null or a valid date representation. If the nullable modifier is not added to the rule definition, the validator would consider null an invalid date.<\/p>\r\n<p><strong>CUSTOM ERROR MESSAGES:<\/strong><\/p>\r\n<p><strong>add&nbsp; below code in your controller<\/strong><\/p>\r\n<pre class=\"language-markup\"><code>use Illuminate\\Support\\Facades\\Validator;<\/code><\/pre>\r\n<pre class=\"language-markup\"><code>            $rules = [\r\n                'name' =&gt; 'required|max:255',\r\n                'email' =&gt; 'required|email',\r\n            ];\r\n            $messages = [\r\n                'required' =&gt; 'The :attribute field is required.',                \r\n                'email.email' =&gt; 'Please enter a valid email address',\r\n            ];\r\n            $validator = Validator::make($request-&gt;all(), $rules, $messages);\r\n\r\n            if ($validator-&gt;fails()) {\r\n                return redirect()-&gt;back()\r\n                    -&gt;withErrors($validator)\r\n                    -&gt;withInput();\r\n            }<\/code><\/pre>\r\n<p>OR<\/p>\r\n<pre class=\"language-markup\"><code>$custom_message = [       \r\n      'first_name.required' =&gt; 'Please enter a valid Name',\r\n];\r\n$validator = Validator::make($request-&gt;all(), $rules, $messages);\r\n\r\n$validation = Validator::make($input, [\r\n            'first_name' =&gt; ['required', 'string', 'max:255'],         \r\n        ], $custom_message)-&gt;validate();\r\n<\/code><\/pre>\r\n<p><strong>All rules list here<\/strong><\/p>\r\n<p>Accepted,Accepted If,Active URL,After (Date),After Or Equal (Date),Alpha,Alpha Dash<\/p>\r\n<p><strong>https:\/\/laravel.com\/docs\/9.x\/validation#available-validation-rules<\/strong><\/p>\r\n<p>_________________________<\/p>\r\n<p>Controller.php<\/p>\r\n<pre class=\"language-markup\"><code>session()-&gt;flashInput($request-&gt;input());\r\nreturn view('index.php');<\/code><\/pre>\r\n<p>View.php<\/p>\r\n<pre class=\"language-markup\"><code>{{ old('name') }}\r\n\r\n{{Request::old('name')}}<\/code><\/pre>\r\n<p><strong>How to echo image path:<\/strong><\/p>\r\n<pre class=\"language-markup\"><code>{{Storage::url($customer-&gt;image)}}<\/code><\/pre>\r\n<p><br><strong>GET REQUEST:<\/strong><\/p>\r\n<p><strong>View<\/strong><\/p>\r\n<pre class=\"language-markup\"><code>&lt;form action=\"\/search\" method=\"GET\"&gt;\r\n  &lt;input type=\"email\" name=\"email\" \/&gt;\r\n  &lt;button type=\"submit\"&gt;Submit&lt;\/button&gt;\r\n&lt;\/form&gt;<\/code><\/pre>\r\n<p><strong>Controller<\/strong><\/p>\r\n<pre class=\"language-markup\"><code>use Illuminate\\Http\\Request;\r\npublic function search(Request $request)\r\n{\r\n    $email = $request-&gt;input('email');\r\n    return view('search-results', compact('name', 'email'));\r\n}<\/code><\/pre>\r\n<p>Route:<\/p>\r\n<pre class=\"language-markup\"><code>Route::get('\/search', 'YourController@search');<\/code><\/pre>\r\n<p>GET Query parameter inside view&nbsp;<\/p>\r\n<pre class=\"language-markup\"><code>app('request')-&gt;input('email')<\/code><\/pre>\r\n<p><strong>POST REQUEST:<\/strong><\/p>\r\n<p><strong>View<\/strong><\/p>\r\n<pre class=\"language-markup\"><code>&lt;form action=\"\/submit\" method=\"POST\"&gt;\r\n    @csrf &lt;!-- Add this CSRF token for security --&gt;\r\n    &lt;input type=\"email\" name=\"email\" \/&gt;\r\n    &lt;button type=\"submit\"&gt;Submit&lt;\/button&gt;\r\n&lt;\/form&gt;\r\n<\/code><\/pre>\r\n<p><strong>Controller:<\/strong><\/p>\r\n<pre class=\"language-markup\"><code>use Illuminate\\Http\\Request;\r\npublic function submit(Request $request)\r\n{\r\n    $email = $request-&gt;input('email');\r\n    return redirect('\/success');\r\n}\r\n<\/code><\/pre>\r\n<p><strong>Route:<\/strong><\/p>\r\n<pre class=\"language-markup\"><code>Route::post('\/submit', 'YourController@submit');<\/code><\/pre>\r\n<p>&nbsp;<\/p>","category_id":"2","is_private":"0","created_at":"2023-03-14T04:19:41.000000Z","updated_at":"2024-11-28T02:26:47.000000Z","category":{"id":2,"user_id":"1","name":"Laravel Core","slug":"laravel-nhyt","parent_id":"1","created_at":"2023-03-14T03:58:27.000000Z","updated_at":"2023-03-20T11:30:50.000000Z"},"user":{"id":1,"name":"R GONDAL","email":"rizikmw@gmail.com","email_verified_at":null,"two_factor_confirmed_at":null,"current_team_id":"1","profile_photo_path":null,"created_at":"2023-03-12T10:49:33.000000Z","updated_at":"2025-01-10T12:59:00.000000Z","profile_photo_url":"https:\/\/ui-avatars.com\/api\/?name=R+G&color=7F9CF5&background=EBF4FF"}},"pageDesc":"Laravel Validation is a feature of the Laravel framework that provides a convenient way to validate incoming data from HTTP requests, form s - Laravel Validation And Repopulating Forms (form values preserve in view ), GET and Post requests (Updated: November 28, 2024) - Read more about Laravel Validation And Repopulating Forms (form values preserve in view ), GET and Post requests at my programming site [SITE]","categories":[]}