I cannot set correctly validation in Laravel. Among other functions I have this in the Controller
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Exports\RimborsiExport;
use DB;
use App\Customers;
use App\Claims;
use App\Refunds;
use App\Services;
use App\Http\Requests\RefundsPost;
use Excel;
use DataTables;
use Redirect;
use Response;
class RefundsController extends Controller
{
public function storeRefundsData(RefundsPost $request){
dd($request);
//$validated = $request->validated();
$customers = Customers::create($request->all());
return back()->with('status', 'Dati Cliente inseriti correttamente');
}
}
I have also defined a custom Request type
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class RefundsPost extends FormRequest
{
/**
* 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()
{
$rules = [
'contr_nom' => 'required|max:255',
'contr_cog' => 'required',
'polizza' => 'required',
'email' => 'required',
'targa' => 'required',
'iban' => 'required|iban',
'int_iban' => 'required',
];
return $rules;
}
public function messages()
{
return [
'contr_nom.required' => "Il Nome Contraente e' obbligatorio",
'contr_cog.required' => "Il Cognome Contraente e' obbligatorio",
'polizza.required' => "Il numero di polizza e' obbligatorio",
'email.required' => "Una mail e' obbligatoria per le comunicazioni",
'targa.required' => "La targa e' obbligatoria",
'data_sin.required' => "La data sinistro e' obbligatoria",
'iban.required' => "Il numero IBAN e' obbligatorio",
'int_iban.required' => "L'intestatario dell' IBAN e' obbligatorio",
'dossier.required' => "Il numero di dossier e' obbligatorio",
'cliente.required' => "Il cliente e' obbligatorio",
'stato.required' => "Lo stato del rimborso e' obbligatorio",
'date_ref.required' => "La data della richiesta e' obbligatoria",
];
}
}
and i have this blade with the form inside
<div class="container-fluid">
<form method="POST" action="{{ route('storeRefundsData') }}" novalidate>
{{ csrf_field() }}
<h5 class="mb-3">Anagrafica</h5>
<div class="row">
<div class="col-md-6 mb-3">
<label for="contr_nom">Nome Contraente</label>
<input type="text" class="form-control @error('contr_nom') is-invalid @enderror" id="contr_nom" name="contr_nom" value="{{old('contr_nom')}}">
@error('contr_nom')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="col-md-6 mb-3">
<label for="contr_cog">Cognome Contraente</label>
<input type="text" class="form-control @error('contr_cog') is-invalid @enderror" id="contr_cog" name="contr_cog" value="{{old('contr_cog')}}">
@error('contr_cog')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
</div>
<div class="row">
<div class="col-md-6 mb-3">
<label for="polizza">Numero Polizza <span class="text-muted"></span></label>
<input type="text" class="form-control @error('polizza') is-invalid @enderror" id="polizza" name="polizza" value="{{old('polizza')}}">
@error('polizza')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="col-md-6 mb-3">
<label for="email">Email <span class="text-muted"></span></label>
<input type="email" class="form-control @error('email') is-invalid @enderror" id="email" name="email" placeholder="[email protected]" value="{{old('email')}}">
@error('email')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
</div>
<div class="row">
<div class="col-md-6 mb-3">
<label for="targa">Targa veicolo</label>
<input type="text" class="form-control @error('targa') is-invalid @enderror" id="targa" name="targa" placeholder="Inserisci la targa" value="{{old('targa')}}">
@error('targa')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
</div>
<h5 class="mb-3">Dati bancari</h5>
<div class="row">
<div class="col-md-6 mb-3">
<label for="iban">IBAN <span class="text-muted"></span></label>
<input type="text" class="form-control @error('iban') is-invalid @enderror" id="iban" name="iban" placeholder="Inserisci il tuo IBAN" value="{{old('iban')}}">
@error('iban')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="col-md-6 mb-3">
<label for="int_iban">Intestatario IBAN <span class="text-muted"></span></label>
<input type="text" class="form-control @error('int_iban') is-invalid @enderror" id="int_iban" name="int_iban" placeholder="Inserisci l'intestatario dell'IBAN" value="{{old('int_iban')}}">
@error('int_iban')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
</div>
<hr class="mb-4">
<!-- <button class="btn btn-primary btn-lg btn-block" type="submit">Continue to checkout</button>-->
<input type="submit" class="btn btn-primary btn-lg btn-block" value="Salva">
@if (session('status'))
<div class="alert alert-success">
{{ session('status') }}
</div>
@endif
</form>
</div>
I cannot understand why when i click on form submit button to create a new row in the db, it seems that even it doesn't enter Controller function. If I use Request instead of custom type RefundsPost it works and store data in the db but obviously without validation. How can i fix? Thx a lot
{{ var_dump($errors) }}in your form and have a look if there are any validation errors.