Использование репозитория внутри запроса формы на Laravel

Итак, я нахожу себя создание запроса формы чтобы подтвердить запрос, который был отправлен из формы. И иногда это становится слишком сложным, что Правила проверки Laravel не могу помочь, поэтому я делаю еще одну проверку в службе данных (которая импортируется в контроллер).

Я приведу пример, чтобы прояснить ситуацию:

Писатель постов и статей. Запрос данных обрабатывается в App\Http\Requests\Article\CreateArticleRequest, После того, как валидация подтвердит, что она действительна, запрос передается контроллеру. В контроллере отправляю запрос на ArticleService для бизнес-логики. Все идет нормально.

Но! Что делать, если я хочу сделать какую-то конкретную проверку самостоятельно, что правила проверки Laravel не могут мне помочь. потому что тогда мне придется загружать хранилище для сложных запросов.

Таким образом, большая проблема заключается в том, что я «дважды проверяю» запрос, а не один раз. Поэтому я подумал о слиянии моих 2 авторизаций (1 из \ Request и второй из моего Service). Но для этого мне нужно будет загрузить репозитории, которые привязаны к их интерфейсу. Так какое у тебя решение?

1

Решение

когда простирающийся фабрика валидатора с новым правилом, вы можете передать ему наследование замыкания (см. пример № 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 */
}
1

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector