#laravel #laravel-7
#laravel #laravel-7
Вопрос:
Итак, я разрабатываю пакет composer, который добавляет несколько моих повторно используемых кодов в новый проект Laravel. До сих пор мне удавалось добавлять основные файлы перевода и некоторые модели, маршруты в моем сервис-провайдере с помощью $this-&&t;publishes()
и $this-&&t;loadRoutesFrom()
в моем boot()
методе.
Теперь я хочу добавить Gate в этот пакет, но я застрял. Каким-то образом я должен зарегистрировать их в AuthServiceProvider
проекте при запуске. Было бы очень приятно, если бы кто-нибудь мог дать мне несколько советов, как выполнить эту задачу.
Комментарии:
1. Как это связано с Composer?
2. Поскольку я создаю пакет composer. Но я подчеркиваю, что это больше связано с laravel.
Ответ №1:
Если вы хотите зарегистрировать политики, нет необходимости использовать AuthServiceProvider, вы можете просто использовать IlluminateSupportFacadesGate::policy($key, $value)
.
Вы можете сделать это в своем собственном ServiceProvider вашего пакета. Если вы хотите определить возможности, вы можете добавить boot
метод, подобный этому:
use IlluminateContractsAuthAccessGate as GateContract;
// ...
public function boot(GateContract $&ate)
{
$&ate-&&t;define('update-post', function ($user, $post) {
return $user-&&t;id === $post-&&t;user_id;
});
}
Это разрешит экземпляр &ate для вас и позволит вам определить возможности. Важно использовать boot
метод, поскольку таким образом вы можете быть уверены, что каждая служба уже зарегистрирована.