2016-06-21 26 views
5

Khi người dùng điền vào Tin nhắn (văn bản), họ không thể điền các giá trị Ngày, Thời gian, Địa điểm.
Ba trường đó sẽ chỉ xem xét khi Thông báo trống và tất cả ba trường đó đều được lấp đầy.
Làm cách nào để thực hiện điều này bằng cách sử dụng xác thực biểu mẫu Laravel? Có thể xác định logic này trong phương thức quy tắc của Yêu cầu không?
Tôi mới cho Laravel.
Cảm ơn trướcXác thực Mẫu Laravel với các toán tử logic

This is my form

+2

Vì vậy, bạn muốn trường thông báo được người dùng điền hoặc chỉ ba trường đó. Nhưng không phải tất cả bốn người trong số họ lại với nhau? Bất cứ ai yêu cầu để được fullfiled? –

+0

Có, không phải tất cả bốn với nhau. – Sachith

Trả lời

4

Bạn có thể đạt được điều này (serverside) bằng cách sử dụng quy tắc xác nhận có điều kiện:

  • required_if: anotherfield, giá trị, ...
  • required_unless: anotherfield, giá trị , ...
  • required_with: foo, bar, ...
  • required_with_all: foo, bar, ...
  • required_without: foo, quầy bar, ...
  • required_without_all: foo, quầy bar, ...

tôi sẽ nói cho trường hợp của bạn:

  • ngày là cần thiết trừ khi nhắn được điền vào
  • thời gian là bắt buộc trừ khi thư được điền vào
  • địa điểm là cần thiết trừ khi thông điệp được điền-in
  • nhắn là cần thiết mà không cần tất cả ngày, giờ, địa điểm

quy tắc Chain nếu bạn cần chia tách bằng ống

sau một đoạn mã mẫu. Sử dụng phương pháp này bên trong của bạn ExampleFormRequest mở rộng Request

/** 
* Get the validation rules that apply to the request. 
* 
* @return array 
*/ 
public function rules() 
{ 
    $rules = []; 

    switch ($this->method()) { 
     case 'PATCH': 
     case 'PUT': 
     case 'POST': 
      $rules = [ 
       'date' => 'required_without:message', 
       'time' => 'required_without:message', 
       'venue' => 'required_without:message', 
       'message' => 'required_without_all:date,time,venue', 
       ]; 
      break; 
     default: 
      // Perform no alteration to rules 
      break; 
    } 

    return $rules; 
} 

Thanh toán documentation here

+1

bạn có thể đăng một mã ví dụ để thực hiện việc này không? – Sachith

+0

Mã ví dụ đã được thêm – alariva

+1

InvalidArgumentException trong dòng Validator.php 2999: Quy tắc xác thực required_unless yêu cầu ít nhất 2 tham số. – Sachith

2

Như bạn nói quy tắc xác nhận như trường 'Message' hoặc tất cả các ba ('date', 'thời gian',' địa điểm ') phải được lấp đầy. Vì vậy, các quy tắc sẽ giống như dưới đây.

$rules = [ 
      'date' => 'required_with_all:time,venue|required_without:message', 
      'time' => 'required_with_all:date,venue|required_without:message', 
      'venue' => 'required_with_all:date,time |required_without:message', 
      'message' => 'required_without_all:date,time,venue', 
      ]; 
+0

vâng, đây là những gì tôi đang tìm kiếm. – Sachith

Các vấn đề liên quan