Неудачная проверка не останавливает выполнение кода в компоненте Livewire.Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Неудачная проверка не останавливает выполнение кода в компоненте Livewire.

Сообщение Anonymous »


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

Если нечисловое значение отправляется обратно из входных данных from или to, я ожидал, что проверка перехватит его и просто выдаст некоторые ошибки в сеанс, но вместо этого я по-прежнему возникают ошибки SQL, поскольку либо from, либо to не были числовыми (например: неверный синтаксис ввода для целого числа: «2020a» (SQL: select * from « my_models», где «год» между 2020a и 2021))

Код компонента Livewire

Класс ModelList расширяет компонент { используйте WithPagination; общественный $от; публичный $to; публичный $поиск; защищенные $модели; защищенные $правила = [ 'from' => ['обязательно', 'целое', 'между: 1970,2021'], 'to' => ['обязательно', 'целое', 'между:1970,2021'], 'поиск' => ['обнуляемое', 'строка'], ]; публичная функция mount() { $this->from = (int) date('Y') - 10; $this->to = (int) date('Y'); $this->search = null; $this->doQuery(); } обновление публичной функции ($name, $value) { $this->validate(); $this->doQuery(); $this->resetPage(); } публичная функция рендеринга() { return view('livewire.list', ['models' => $this->models]); } защищенная функция doQuery() { $this->models = MyModel::query() ->whereBetween('год', [$this->from, $this->to]) ->поиск($this->поиск) ->orderByDesc('год') -> разбить на страницы (10); } } Просмотр

@error('от') {{ $message }} @enderror @error('кому') {{ $message }} @enderror @error('поиск') {{ $message }} @enderror @foreach ($models как $model) {{ $model->id }}
@endforeach {{ $models->links() }} Я пробовал разные вещи, например
[*]просто выполняем запрос внутри метода render(), встраивая метод doQuery(). [*]просто выполняем запрос внутри метода updating(). [*]просто выполняю запрос внутри метода mount(). [*]выполнение запроса внутри методов updating(), mount() и render(). [*]вызов $this->validate() внутри render()
но ничего из вышеперечисленного, похоже, не работает с неверным вводом. Иногда $models сбрасывается, и я получаю сообщение об ошибке при вызове метода links(). Если этого не произойдет, я получу ошибку SQL, поскольку неправильный ввод прошел проверку.

Я знаю, что могу использовать ввод выбора или добавить немного JavaScript, чтобы предотвратить нечисловые значения, но это не решает основную проблему, связанную с невозможностью доверять Livewire для проверки моего ввода. (И достаточно открыть консоль и написать пару строк, чтобы полностью аннулировать такую ​​ненадежную проверку.)
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Livewire 404: GET http://localhost/livewire/livewire.js net::ERR_ABORTED 404 (не найден)
    Anonymous » » в форуме Php
    0 Ответы
    171 Просмотры
    Последнее сообщение Anonymous
  • LiveWire 404: Get http: //localhost/livewire/livewire.js net :: err_aborted 404 (не найдено)
    Anonymous » » в форуме Php
    0 Ответы
    60 Просмотры
    Последнее сообщение Anonymous
  • Доступ к хранилищу данных останавливает выполнение функции
    Anonymous » » в форуме Android
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Доступ к хранилищу данных останавливает выполнение функции
    Anonymous » » в форуме Android
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Сценарий содержимого расширения Chrome останавливает выполнение при первом вызове функции и не выдает ошибок
    Anonymous » » в форуме CSS
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Php»