programing

필수_라벨 5 유효성 검사인 경우

minimums 2023. 8. 6. 09:55
반응형

필수_라벨 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',
    }

그러나 양식을 제출할 때 다음 오류가 발생합니다.

My Error

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

당신은 사용할 수 있습니다.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',
            ...
        ]
    ];
}

다른 필드가 없는 경우 요구 사항이 필요한 다른 상황이 발생할 수 있습니다. 이 상황에 있는 사람은 다음을 수행할 수 있습니다.

'your_field.*' => 'required_unless:dependency_field.*,

아래와 같이 Laravel을 사용하여 검증자를 작성할 수 있습니다.

$validator =  Validator::make( $request->input(), [
    'list_type' => 'required',
    'sale_price'=> Rule::requiredIf( function () use ($request){
        return $request->input('list_type') == 'For Sale';
    }),
    'rent_price'=> Rule::requiredIf( function () use ($request){
        return $request->input('list_type') == 'For Rent';
    }),
]);

나는 이 필수 항목을 사용하여 두 개의 값을 확인해야 하며 다음과 같이 썼습니다.

return [
        'change_status' => 'required',
        'forward_to' => 'required_if:change_status,2,3'
    ];

언급URL : https://stackoverflow.com/questions/37777265/required-if-laravel-5-validation

반응형