Thursday, June 11, 2020

Laravel Input multi dimensional array

Hi, in my template I have:
@for($i = 0; $i < 4; $i++) 
        {{ dd(Input::old('custom_link.0.title')) }}
        <div class="form-group">
            <label for="link_title_{{ $i }}">Link Title {{ $i+1 }}</label>
            <input type="text" class="form-control" id="link_title_{{ $i }}" name="custom_link[{{ $i }}][title]" value="{{ Input::old('custom_link.0.title') }}">
        </div>
        
    @endfor
put template 
{{ Input::old('custom_link.' . $i . '.title')) }}

After vlidation on controller I return
return Redirect::route('community-create-step-4')
     ->withErrors($validator)
     ->withInput();

Wednesday, June 10, 2020

Validation rules that depends on what the request is using condition

You could use the request helper:
public function rules()
{
    $baseRules = [
       'email' => 'required|email',
       'g-recaptcha-response' => 'required|recaptcha'
    ];
    if(request()->get("valueFromPost") === '2') {    
        return $baseRules + [                
            'confirm_email' => 'required|email|same:email'
        ];

    }

    return $baseRules;
}
Or the shorter (but less readable) version:
public function rules()
{
    return [
       'email' => 'required|email',
       'g-recaptcha-response' => 'required|recaptcha'
    ] + (request()->get("valueFromPost") === '2' ? [ 'confirm_email' => 'required|email|same:email' ] : []);    
}