Как расшифровать строку, только если строка не пуста / пуста - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть форма, к которой пользователь может вернуться и заполнить в любое время.У меня есть одно поле выбора, в частности с данными, которые должны быть зашифрованы.

Проблема, с которой я сталкиваюсь, заключается в том, что, поскольку это поле является необязательным, бывают случаи, когда поле может быть пустым или пустым, и поэтому моя страница завершается с ошибкой «Полезные данные недопустимы».Я предполагаю, что это потому, что он пытается расшифровать поле, которое является нулевым, и, следовательно, не может.

Вот часть блейда ниже:

        <label for="religion">Religion</label>
        <select class="form-control" name="religion" id="religion">
            <option value="" selected>Choose...</option>
            <option value="Religion 1" @if(old('religion', decrypt($user->diversity->religion) === "Religion 1")) selected @endif>Religion 1</option>
            <option value="Religion 2" @if(old('religion', decrypt($user->diversity->religion) === "Religion 2")) selected @endif>Religion 2</option>
        </select>

Поскольку я также использую функцию old(), чтобы также возвращать значения полей в случае сбоя проверки, я не могу сделатьоператор if с empty() для проверки, не является ли $user->diversity->religion не пустым.

Есть ли способ сделать это, не делая мой клинок слишком раздутым.Было бы идеально, если бы был способ расшифровать строку, только если она не пуста / пуста.

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Чтобы уменьшить раздувание, вы можете поставить флажок для свойств в модели User.Я не собираюсь писать весь код, но заглушку, подобную этой, в User:

public function decryptProperty($property) {}

, где вы можете проверить, установлено ли свойство, расшифровать его и вернуть значение.Затем, по вашему мнению, вы можете уменьшить раздувание, просто проверив пользовательскую модель напрямую:

<option value="Religion 1" @if(old('religion', $user->decryptProperty($user->diversity->religion) === "Religion 1")) selected @endif>Religion 1</option>

Это позволяет вам сохранить большую часть вашей логики в вашей модели и поддерживать в основном аккуратный вид (настоятельно рекомендуется).

0 голосов
/ 17 сентября 2018

Просто проверьте, является ли значение пустым, перед его расшифровкой:

<option value="Religion 1" @if(old('religion', empty($user->diversity->religion) ? '' : decrypt($user->diversity->religion) === "Religion 1")) selected @endif>Religion 1</option>

Или, если вы хотите немного большего удобства, вы можете добавить метод доступа в пользовательской модели:

public function getDecryptedReligionAttribute()
{
    return empty($this->diversity->religion) ? '' : decrypt($this->diversity->religion);
}

Это позволит вам просто передать $user->decrypted_religion в функцию old:

<option value="Religion 1" @if(old('religion', $user->decrypted_religion) === "Religion 1") selected @endif>Religion 1</option>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...