требуется, если проверка Laravel 5
У меня есть форма, которую пользователь может заполнить для продажи своего дома. И для одного из входов пользователь должен выбрать, будет ли он "На продажу" или "В аренду". Если он выставлен на продажу, появятся два поля ввода цены, а если он сдается в аренду, то появится какое-то другое поле ввода цены, основанное на jQuery.
Моя проблема в том, что я хочу, чтобы поля цены были обязательными, НО, например, если я выберу "Сдается в аренду", а затем отправлю свою форму, это выдаст мне сообщение об ошибке с указанием полей цены для поля "Для продажи" требуются поля ввода, даже если оно находится в разделе "Для аренды".
Я знаю, что в Laravel есть required_if, но я просто не знаю, как это использовать. Вот мои запросы на недвижимость.
<?php
namespace App\Http\Requests;
use App\Http\Requests\Request;
class PropertyRequest extends Request
{
/**
* 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 [
'list_type' => 'required',
'sale_price' => 'required', // <-- maybe like: required_if:value
'rent_price' => 'required',
];
}
}
/****************** РЕДАКТИРОВАТЬ ***************************/
Что у меня есть сейчас:
public function rules()
{
return [
'list_type' => 'required',
'sale_price' => 'required_if:list_type:For Sale',
'rent_price' => 'required_if:list_type:For Rent',
}
Но я получаю эту ошибку, когда отправляю форму:
1 answers
Предполагая, что list_type - это имя поля выбора для выбора (значения: продажа или аренда)
Используйте его таким образом
"sale_price" => "required_if:list_type,==,selling"
Что это значит? :
Цена продажи требуется только в том случае, если значение list_type равно selling
Сделайте то же самое для rent_price
Редактировать
public function rules()
{
return [
'list_type' => 'required',
'sale_price' => 'required_if:list_type,==,For Sale',
'rent_price' => 'required_if:list_type,==,For Rent'
}