Итак, я нахожу себя создание запроса формы чтобы подтвердить запрос, который был отправлен из формы. И иногда это становится слишком сложным, что Правила проверки Laravel не могу помочь, поэтому я делаю еще одну проверку в службе данных (которая импортируется в контроллер).
Я приведу пример, чтобы прояснить ситуацию:
Писатель постов и статей. Запрос данных обрабатывается в App\Http\Requests\Article\CreateArticleRequest
, После того, как валидация подтвердит, что она действительна, запрос передается контроллеру. В контроллере отправляю запрос на ArticleService
для бизнес-логики. Все идет нормально.
Но! Что делать, если я хочу сделать какую-то конкретную проверку самостоятельно, что правила проверки Laravel не могут мне помочь. потому что тогда мне придется загружать хранилище для сложных запросов.
Таким образом, большая проблема заключается в том, что я «дважды проверяю» запрос, а не один раз. Поэтому я подумал о слиянии моих 2 авторизаций (1 из \ Request и второй из моего Service
). Но для этого мне нужно будет загрузить репозитории, которые привязаны к их интерфейсу. Так какое у тебя решение?
когда простирающийся фабрика валидатора с новым правилом, вы можете передать ему наследование замыкания (см. пример № 3 Вот) любые зависимости, которые требуются.
Так что в вашем случае это будет примерно так:
public function boot()
{
$repository = $this->app->make(Repository::class);
Validator::extend('foo', function ($attribute, $value, $parameters, $validator) use ($repository) {
return /* your validation logic */
});
}
Что касается авторизации, вы можете просто напечатать подсказку необходимых зависимостей в сигнатуре вашего метода авторизации:
public function authorize(Repository $repository)
{
return /* your authorization logic */
}
Других решений пока нет …