2016-08-20 4 views
1

Можно ли использовать метод isEmpty() для проверки ввода a для пустого поля? У меня есть validate($request), где у него есть несколько форм для заполнения. У меня есть дополнительная форма, где это не совсем необходимо.

Контроллер:

$this->validate($request, 
[ 
    'title' => 'required|regex:/(^[A-Za-z0-9 ]+$)+/|max:255', 
    'content' => 'required', 
    'category' => 'required', 
    'approver' => 'required', 
    'recipient' => 'required', 
]);  


$document = new Document(); 
$user = Auth::user(); 
           //Request in the form 
$document->title = $request->title; 
$document->content = $request->content; 
$document->category_id = $request->category; 
$document->save(); 

foreach($request->recipient as $recipientId) 
{ 
    $document->sentToUsers()->sync([ $recipientId => ['sender_id' => $user->id]],false); 
} 

У меня есть имя формы department, который не требуется для заполнения. Я пытаюсь проверить, не пуст ли он вставить это в базу данных. Если пусто, ничего не произойдет.

if(!$request->department->isEmpty()) 
{ 
    foreach($request->department as $departmentId) 
    { 
     foreach(Department::find($departmentId)->users()->get() as $user1) //find the users belonging to the current department 
     { 
      $document->sentToUsers()->sync([ $user1->id => ['sender_id' => $user->id]],false); 
     } 
    } 
} 
else 
{ 

} 
+1

Попробуй и посмотри? – Farkie

ответ

1

Вы всегда можете использовать empty():

if(!empty($request->department)) 

Я думаю isEmpty() это for collection only и вы проверяете свойство Request объекта:

Метод IsEmpty возвращает истину, если коллекция пусто; в противном случае, возвращается ложь

2

Выполнение $request->field даст вам значение этого поля, будь то строка, массив, число или что-нибудь еще. Вы можете просто использовать empty функцию PHP, чтобы проверить, если он пустой, прежде чем делать что-то:

if (!empty($request->department)) { 
    // ... 
} 
1

Как уже отмечалось другими ответами метод isEmpty вы имеете в виду для коллекций, тогда как вы проверяете значений свойств.

Тем не менее, я хотел бы добавить одну очень важную заметку об использовании empty.

В РНР empty конструкция семантически идентична !isset($thing) || !$thing таким образом, что обе empty($thing) и !isset($thing) || !$thing дают одинаковые результаты. Конструкция isset просто используется, чтобы определить, не является ли переменная null без использования каких-либо неопределенных переменных ошибок. Объедините это с логической проверкой правды, и мы получим empty.

Возможно, это не всегда так, как вы. Например, в PHP объект всегдаtrue в таблице истины. Однако такие вещи, как целое число 0 и пустая строка "", или даже пустой Array считаются ложными в таблице истинности. Вот почему всегда важно проверить truth table, прежде чем принимать решение об использовании.

Так, например, строка нулевой длины может быть пустой для вас, но она может быть не пустой для меня, если ожидается, что пользователь отправил значение isset($_POST['thing']) === true, но в качестве пустой строки.

Вы также должны учитывать такие вещи, как <input type="checkbox">, где ожидается, что браузер не отправит значение вообще, если он не установлен. Или тот факт, что через HTTP все значения изначально являются строками.Таким образом, вы можете использовать фильтры, как filter_var("false", FILTER_VALIDATE_BOOLEAN) который превращает строку "false" (, что не будет оценивать в empty) в логическое значение false (что бы).

+0

Спасибо за этот обманщик. Это так легко найти метод, который вы хотели использовать. – Francisunoxx

Смежные вопросы