Кнопки индекса Laravel Nova не отображаются

Я нахожусь в процессе создания моего интерфейса Laravel Nova и добавления необходимых полей к каждому из ресурсов. Однако я заметил, что кнопки редактирования / детализации / корзины не отображаются на моем указателе.

Есть ли что-то, что нужно добавить в мой класс ресурсов, или это связано с тем, как построены мои контроллеры?

Вот как выглядит мой метод полей:

/**
* Get the fields displayed by the resource.
*
* @param  \Illuminate\Http\Request  $request
* @return array
*/
public function fields(Request $request)
{
return [
ID::make()->sortable(),

Gravatar::make(),

Text::make('First Name')
->sortable()
->rules('required', 'max:255'),

Text::make('Last Name')
->sortable()
->rules('required', 'max:255'),

Text::make('Email')
->sortable()
->rules('required', 'email', 'max:255')
->creationRules('unique:users,email')
->updateRules('unique:users,email,{{resourceId}}'),

Text::make('Administrator', 'is_admin')
->sortable()
->rules('required', 'max:255'),

Password::make('Password')
->onlyOnForms()
->creationRules('required', 'string', 'min:6')
->updateRules('nullable', 'string', 'min:6'),

HasMany::make('Configuration'),
];
}

Изображение в виде списка

4

Решение

Поскольку у вас есть настройка политики для ваших пользователей, вы должны включить в свой UserPolicy учебный класс:

viewAny
view
create
update
delete
restore
forceDelete

Вы можете установить их на return true и они появятся. Например:

public function update(User $user){
return true;
}

Тогда ваша кнопка обновления появится.

Если политика существует, но отсутствует метод для определенного действия, пользователь не сможет выполнить это действие. Итак, если вы определили политику, не забудьте определить все соответствующие методы авторизации.

Для получения дополнительной информации о политиках: https://nova.laravel.com/docs/1.0/resources/authorization.html#policies

3

Другие решения

Вы, вероятно, захотите сделать все это редактируемым вами и никем другим, поэтому вы захотите ввести возможность администратора.

Добавьте логическое значение is_admin в таблицу пользователей, по умолчанию 0.

Schema::table('users', function($table) {
$table->boolean('is_admin')->nullable()->default(false);
});

Затем настройте политики для каждого ресурса, который вы хотите, чтобы ваш администратор мог редактировать. https://laravel.com/docs/5.6/authorization#creating-policies

Затем добавьте политики для каждого вида, создайте, обновите, отредактируйте, удалите, например, это позволит администратору или авторизованному пользователю обновлять пользователя.

public function update(User $user, User $userBeingEdited)
{
return $user->is_admin === 1 or $user->id === $userBeingEdited->id;
}

Точно так же это позволит только вашему администратору создать пользователя

public function create(User $user)
{
return $user->is_admin === 1;
}

Nova будет работать с ними автоматически, поэтому просто обновите свою страницу, и вы должны увидеть кнопки в каждой строке.

1

По вопросам рекламы [email protected]