required_if 拉拉维尔 5 验证

2022-08-30 09:37:54

我有一些表格,用户可以填写表格来出售他们的房屋。对于其中一个看跌期权,用户必须选择天气,它将是“待售”或“待租”。如果它是“待售”,则会出现两个价格输入字段,如果它是“出租”,则将基于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',
    }

但是当我提交表单时,我收到此错误:

My Error


答案 1

假设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'
}

答案 2

您可以直接使用该规则。Illuminate\Validation\Rules\RequiredIf

注意:此规则在 Laravel 5.6 及更高版本中可用。

class SomeRequest extends FormRequest
{
    ...
    public function rules()
    {
        return [
            'sale_price' => new RequiredIf($this->list_type == 'For Sale'),
            'rent_price' => new RequiredIf($this->list_type == 'For Rent'),
        ];
    }
}

如果您需要使用多个规则,则可以传入数组。

public function rules()
{
    return [
        'sale_price' => [
            new RequiredIf($this->list_type == 'For Sale'),
            'string',
            ...
        ]
    ];
}


推荐