Создайте свой первый CRUD в Laravel Backpack
У вас уже есть модель, App\Models\User
… как и у всех проектов Laravel. Давайте создадим страницу для администрирования пользователей . Мы хотим, чтобы администратор мог создавать, читать, обновлять и удалять их. В Backpack мы называем это CRUD . И вы можете легко сгенерировать ее для существующей модели Eloquent, выполнив:
php artisan backpack:crud user
Запустите это в своем терминале и выберите field
, когда вас спросят, какой тип проверки вы хотите . Теперь вы можете нажать на новый элемент боковой панели (или здесь ), и вы сможете увидеть записи в users
таблице. Теперь… хотя большинство сгенерированных CRUD-файлов работают из коробки, они, вероятно, не будут точно такими, как вам нужно. Но именно здесь Backpack блистает, в том, насколько легко его настраивать.
Чтобы копнуть немного глубже, давайте внесем несколько изменений в CRUD пользователя.
1. При перечислении давайте удалим setFromDb()
и определим каждый столбец . Для этого перейдите к UserCrudController::setupListOperation()
строке, которая гласит setFromDb();
— После этого вручную добавьте столбцы для имени и электронной почты, и удалите ее .
protected function setupListOperation()
{
CRUD::column('name');
CRUD::column('email');
}
2. В Create & Update давайте добавим валидацию в формы . Есть несколько способов добавить валидацию , но мы уже выбрали самый простой — валидацию с использованием атрибутов полей . Давайте перейдем setupCreateOperation()
и укажем наши правила валидации непосредственно в полях:
protected function setupCreateOperation()
{
CRUD::field('name')->validationRules('required|min:5');
CRUD::field('email')->validationRules('required|email|unique:users,email');
CRUD::field('password')->validationRules('required');
}
3. На Create давайте хешируем пароль. В настоящее время, если мы создаем нового пользователя, это сработает. Но если вы посмотрите в базу данных… вы заметите, что пароль хранится в виде обычного текста. Мы этого не хотим — мы хотим, чтобы он был хешированным. Есть несколько способов добиться этого тоже . Давайте используем Model Events внутри setupCreateOperation()
. Вот как может выглядеть наш метод, когда мы также подключаемся к creating
событию, чтобы хешировать пароль:
protected function setupCreateOperation()
{
CRUD::field('name')->validationRules('required|min:5');
CRUD::field('email')->validationRules('required|email|unique:users,email');
CRUD::field('password')->validationRules('required');
// if you are using Laravel 10+ your User model should already include the password hashing in the model casts.
// if that's the case, you can skip this step. You can check your model $casts property or `casts()` method.
\App\Models\User::creating(function ($entry) {
$entry->password = \Hash::make($entry->password);
});
}
4. При обновлении давайте не будем требовать пароль . Он должен быть нужен только если администратор захочет его изменить, верно? Это значит, что правила проверки будут другими для «password». Но опять же… правила также будут другими для «email» (потому что при обновлении нам нужно передать ID в уникальное правило в Laravel). Поскольку 2/3 правил отличаются, давайте просто удалим то, что было внутри setupUpdateOperation()
, и напишем код с нуля:
protected function setupUpdateOperation()
{
CRUD::field('name')->validationRules('required|min:5');
CRUD::field('email')->validationRules('required|email|unique:users,email,'.CRUD::getCurrentEntryId());
CRUD::field('password')->hint('Type a password to change it.');
// if you are using Laravel 10+ your User model should already include the password hashing in the model casts.
// if that's the case, you just need to keep the old password unchanged when the user is updated.
\App\Models\User::updating(function ($entry) {
if (request('password') == null) {
$entry->password = $entry->getOriginal('password');
}
});
// in case you are using an older version of Laravel, or you are not casting your password in the model, you need
// to manually hash the password when it's updated by the user
\App\Models\User::updating(function ($entry) {
if (request('password') == null) {
$entry->password = $entry->getOriginal('password');
} else {
$entry->password = \Hash::make(request('password'));
}
});
}
Вот и все. У вас есть работающий CRUD Users. Плюс, вы уже изучили некоторые продвинутые приемы, такие как использование событий Model внутри CrudController . Конечно, это только верхушка айсберга того, что может делать Backpack. Чтобы по-настоящему понять, как он работает и как лучше всего использовать возможности Backpack, мы настоятельно рекомендуем вам перейти к следующему шагу и изучить основы.
Изучите основы 20-30 мин.
Итак, вы создали свой первый CRUD? Отлично. Теперь пришло время понять, как это работает и что еще вы можете сделать . Время изучить основы — как создавать и настраивать панели администратора с помощью Backpack. Пожалуйста, пройдите один из курсов ниже, в зависимости от того, как вы предпочитаете учиться:
- Видеокурс — 31 минута
- Текстовый курс — 20 минут
- Курс по электронной почте — 1 письмо в день, в течение 4 дней, по 5 минут каждое