2016-06-21 4 views
5

Когда пользователь заполняет сообщение (текстовое поле), он не может заполнять значения даты, времени, места.
Эти три поля будут учитываться только тогда, когда Message пустое и все эти три поля заполнены.
Как это сделать, используя валидацию формы Laravel? Можно ли определить эту логику в методе правила запроса?
Я новичок в Laravel.
Заранее спасибоLaravel Проверка формы с помощью логических операторов

This is my form

+2

Таким образом, вы хотите, чтобы любое поле сообщения заполнялось пользователем или только эти три поля. Но не все четверо из них вместе? Любое требование быть заполненным? –

+0

Да, не все четыре вместе. – Sachith

ответ

4

Вы можете достичь этого (на стороне сервера), используя условные правила проверки:

  • required_if: anotherfield, значение, ...
  • required_unless: anotherfield, значение , ...
  • required_with: foo, bar, ...
  • required_with_all: foo, bar, ...
  • required_without: Foo, бар, ...
  • required_without_all: Foo, бар, ...

Я бы сказал, для Вашего случая:

  • даты не требуется, если сообщение заполняется
  • время не требуется, если сообщение не заполнено
  • места требуется, если сообщение не будет заполнено в
  • сообщения требуются без всего дата, время, место проведения

правили Chain, если вам нужно, разделяя их с трубой

следует за пример фрагмента. Используйте этот метод внутри вашего ExampleFormRequest простирающегося 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; 
} 

заказ documentation here

+1

Можете ли вы разместить пример кода для этого? – Sachith

+0

Код примера был добавлен – alariva

+1

InvalidArgumentException в строке Validator.php 2999: Правило проверки required_unless требует не менее 2 параметров. – Sachith

2

Как вы сказали, что правила проверки, как поле «Message» или все из этих трех («даты», «время»,» место проведения »). Поэтому правила должны выглядеть ниже.

$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

Да, это то, что я искал. – Sachith