Reputation: 319
how can I "tell" laravel that if the email field with validation rule 'email' and URL field (for example field where I expect the user to put his Facebook account link but that field IS NOT required) with validation rule 'URL' is not required and it is fine if it is empty. I have put nullable() on all database table columns but my validation rule still applies like it is required. Here are the parts of the code.
This is from migration:
$table->string('site_facebook')->nullable();
$table->string('site_instagram')->nullable();
$table->string('site_twitter')->nullable();
$table->string('site_linkedin')->nullable();
$table->string('site_behance')->nullable();
$table->string('site_dribbble')->nullable();
$table->string('site_email')->nullable();
This part is from validation:
'site_facebook' => 'url',
'site_facebook' => 'url',
'site_instagram' => 'url',
'site_twitter' => 'url',
'site_linkedin' => 'url',
'site_behance' => 'url',
'site_dribbble' => 'url',
'site_email' => 'email',
So, to wrap up my question. I want my URL and email fields to be optional not required :)
EDIT
Since there are some answers and no one work for me I just want to mention (if it does do anything with it), all of my validation rules are in a separate request...
class ManageSiteSettingsRequest 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()
{
return [
'site_name' => 'required|max:50',
'site_facebook' => 'nullable|url',
'site_facebook' => 'url',
'site_instagram' => 'url',
'site_twitter' => 'url',
'site_linkedin' => 'url',
'site_behance' => 'url',
'site_dribbble' => 'url',
'site_email' => 'email',
'site_creator_link' => 'url',
];
}
}
This is the form:
@extends('layouts.admin')
@section('content')
<h2>Site settings</h2>
@include('includes._errors')
@include('includes._sessions')
<form action="{{ route('settings.update') }}" method="post">
@csrf
<div class="form-group">
<label for="site_name">Site name</label>
<input type="text" name="site_name" class="form-control" required placeholder="This field is required!" value="{{ $settings->site_name }}">
</div>
<div class="form-group">
<label for="site_description">Site description</label>
<textarea name="site_description" class="form-control mytinytext" id="site_description" cols="30" rows="10">{!! $settings->site_description !!}</textarea>
</div>
<div class="form-group">
<label for="site_facebook">Site facebook page</label>
<input type="text" name="site_facebook" class="form-control" placeholder="https://www.facebook.com/" value="{{ $settings->site_facebook }}">
</div>
<div class="form-group">
<label for="site_instagram">Site instagram page</label>
<input type="text" name="site_instagram" class="form-control" placeholder="https://www.instagram.com/" value="{{ $settings->instagram }}">
</div>
<div class="form-group">
<label for="site_twitter">Site twitter page</label>
<input type="text" name="site_twitter" class="form-control" placeholder="https://twitter.com/" value="{{ $settings->site_twitter }}">
</div>
<div class="form-group">
<label for="site_linkedin">Site linkedin page</label>
<input type="text" name="site_linkedin" class="form-control" placeholder="https://www.linkedin.com/" value="{{ $settings->site_linkedin }}">
</div>
<div class="form-group">
<label for="site_behance">Site behance page</label>
<input type="text" name="site_behance" class="form-control" placeholder="https://www.behance.net/" value="{{ $settings->site_behance }}">
</div>
<div class="form-group">
<label for="site_dribbble">Site dribbble page</label>
<input type="text" name="site_dribbble" class="form-control" placeholder="https://dribbble.com/" value="{{ $settings->site_dribbble }}">
</div>
<div class="form-group">
<label for="site_email">Site email</label>
<input type="text" name="site_email" class="form-control" placeholder="...@outlook... / ...@hotmail... / ...@gmail..." value="{{ $settings->site_email }}">
</div>
<hr class="divider">
<div class="form-group">
<label for="site_field_one">First footer field title</label>
<input type="text" name="site_field_one" class="form-control" placeholder="PHONE" value="{{ $settings->site_field_one }}">
</div>
<div class="form-group">
<label for="site_field_one_value">First footer field value</label>
<textarea name="site_field_one_value" id="site_field_one_value" class="mytinytext form-control" placeholder="+80 (0)5 22 55 66 77">{{ $settings->site_field_one_value }}</textarea>
</div>
<hr class="divider">
<div class="form-group">
<label for="site_field_two">Second footer field title</label>
<input type="text" name="site_field_two" class="form-control" placeholder="ADDRESS" value="{{ $settings->site_field_two }}">
</div>
<div class="form-group">
<label for="site_field_two_value">Second footer field value</label>
<textarea name="site_field_two_value" id="site_field_two_value" class="mytinytext form-control" placeholder="33 rue Burdeau 69089, Paris France">{{ $settings->site_field_two_value }}</textarea>
</div>
<hr class="divider">
<div class="form-group">
<label for="site_field_three">Third footer field title</label>
<input type="text" name="site_field_three" class="form-control" placeholder="ENQUIRUES" value="{{ $settings->site_field_three }}">
</div>
<div class="form-group">
<label for="site_field_three_value">Third footer field value</label>
<textarea name="site_field_three_value" id="site_field_three_value" class="mytinytext form-control" placeholder="[email protected]">{{ $settings->site_field_three_value }}</textarea>
</div>
<hr class="divider">
<div class="form-group">
<label for="site_field_four">Fourth footer field title</label>
<input type="text" name="site_field_four" class="form-control" placeholder="WORK HOURS" value="{{ $settings->site_field_four }}">
</div>
<div class="form-group">
<label for="site_field_four_value">Fourth footer field value</label>
<textarea name="site_field_four_value" id="site_field_four_value" class="mytinytext form-control" placeholder="Weekdays: 09:00 - 18:00 Weekends: 11:00 - 17:00">{{ $settings->site_field_four_value }}</textarea>
</div>
<hr class="divider">
<div class="form-group">
<label for="site_copyright">Site copyright</label>
<input type="text" name="site_copyright" class="form-control" placeholder="Created with love by _______ (fill 'Site creator name' field)" value="{{ $settings->site_copyright }}">
</div>
<hr class="divider">
<div class="form-group">
<label for="site_creator_name">Site creator name</label>
<input type="text" name="site_creator_name" class="form-control" placeholder="John Doe" value="{{ $settings->site_creator_name }}">
</div>
<div class="form-group">
<label for="site_creator_link">Site creator page</label>
<input type="text" name="site_creator_link" class="form-control" placeholder="https://site-creator-page.com" value="{{ $settings->site_creator_link }}">
</div>
<div class="form-group">
<button type="submit" name="btn_update_site_settings" class="btn btn-block btn-success">Update site settings</button>
</div>
</form>
@include('includes._errors')
@endsection
Upvotes: 0
Views: 4864
Reputation: 138
You can use nullable rule
Like the example below:
'site_facebook' => 'url|nullable',
Upvotes: 5