required_if Laravel 5 验证

新手上路,请多包涵

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

但是当我提交表单时出现此错误:

我的错误

原文由 David 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 876
2 个回答

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

原文由 Achraf Khouadja 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以直接使用 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',
            ...
        ]
    ];
}

原文由 Rob 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题