РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
183 of 274 menu

Метод except

Метод except класса Component позволяет исключить указанные поля из массового заполнения. Он возвращает массив всех свойств компонента, кроме перечисленных. Метод особенно полезен при работе с формами, когда нужно защитить определённые поля от массового присвоения.

Синтаксис

<?php $result = $this->except(['field1', 'field2']); ?>

Метод принимает массив имён полей, которые нужно исключить. Возвращает массив вида ключ-значение со всеми остальными свойствами компонента.

Пример использования

Создадим компонент для формы пользователя, где нужно исключить поле $role из массового заполнения:

<?php namespace AppLivewire; use LivewireComponent; class UserForm extends Component { public $name = ''; public $email = ''; public $role = 'user'; public $isActive = true; public function getDataWithoutRole() { $data = $this->except(['role']); return $data; } public function render() { return view('livewire.user-form'); } } ?>
<div> <form wire:submit.prevent="save"> <input type="text" wire:model="name" placeholder="Name"> <input type="email" wire:model="email" placeholder="Email"> <button type="submit">Save</button> </form> <button wire:click="getDataWithoutRole"> Show data without role </button> <pre>{{ print_r($this->except(['role']), true) }}</pre> </div>

Результат выполнения кода при заполненных полях:

[ 'name' => 'John Doe', 'email' => 'john@example.com', 'isActive' => true ]

Использование в массовом заполнении

Метод часто применяется в сочетании с fill для безопасного массового заполнения модели:

<?php namespace AppLivewire; use LivewireComponent; use AppModelsUser; class UserForm extends Component { public $user; public $name = ''; public $email = ''; public $role = 'user'; public $password = ''; public function save() { $user = User::find(1); $safeData = $this->except(['role', 'password']); $user->fill($safeData); $user->save(); session()->flash('message', 'User updated successfully'); } public function render() { return view('livewire.user-form'); } } ?>

Исключение нескольких полей

Метод может исключать любое количество полей:

<?php namespace AppLivewire; use LivewireComponent; class DataManager extends Component { public $field1 = 'value1'; public $field2 = 'value2'; public $field3 = 'value3'; public $field4 = 'value4'; public $field5 = 'value5'; public function getSafeData() { return $this->except(['field1', 'field3', 'field5']); } public function render() { return view('livewire.data-manager'); } } ?>

Результат выполнения:

[ 'field2' => 'value2', 'field4' => 'value4' ]

Смотрите также

  • метод fill,
    который заполняет свойства компонента из массива
  • метод only,
    который возвращает только указанные поля компонента
  • метод reset,
    который сбрасывает значения свойств компонента
  • метод has,
    который проверяет наличие свойства в компоненте
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить