Подходит ли метод isEmpty () для $ request?

php laravel laravel-5.2

130 просмотра

3 ответа

Можно ли использовать isEmpty()метод для проверки ввода для пустого поля? У меня есть 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
{

}
Автор: Francisunoxx Источник Размещён: 08.11.2019 11:32

Ответы (3)


1 плюс

Решение

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

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

Я предполагаю, что isEmpty()это только для коллекции, и вы проверяете свойство Requestобъекта:

Метод isEmpty возвращает true, если коллекция пуста; в противном случае возвращается false

Автор: Alexey Mezenin Размещён: 20.08.2016 03:56

2 плюса

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

if (!empty($request->department)) {
    // ...
}
Автор: Jonathon Размещён: 20.08.2016 03:58

1 плюс

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

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

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

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

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

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

Автор: Sherif Размещён: 20.08.2016 04:27
Вопросы из категории :
32x32