Auth Маршруты / Представления в Пакете Laravel?

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

Я попытался добавить папку Auth в мой каталог resources / views, а также необходимые контроллеры в каталоге моего пакета с соответствующими пространствами имен. Он попадает в контроллеры, но не видит представление, так как возвращает ошибку о том, что [auth.login] не найден.

Я попытался добавить свойства overides в AuthController следующим образом:

protected $loginView = 'packagename::auth.login';
protected $registerView = 'packagename::register.form';
protected $linkRequestView = 'packagename::link.request.view';
protected $resetView = 'packagename::reset.view';

Тем не менее, он все еще пытается поразить представления, расположенные в главном каталоге приложения Laravel, а не в пакете.

Каков наилучший метод / правильный способ настройки видов аутентификации, маршрутов и т. Д. В пакете Laravel, чтобы он мог иметь собственную область администратора?

1 ответ

Решение

Существует много стратегий, и это зависит от того, какое (и насколько большое) приложение. Я могу привести пример именования.

Views: {package-name}::{area}.{module}-{submodule?}.{action}
Routes: {package-name}.{area}.{module}-{submodule?}.{action}
Config: {package-name}.{area}.{rest-of-config-key}

Позволь мне объяснить:

  1. {package-name} - вы должны всегда указывать, что вы будете знать каждый раз, из какого пакета происходит просмотр / маршрутизация / конфигурация.

  2. {area} - для примера может быть: admin а также user а также front или же restricted а также open, Он опишет уровень доступа пользователя (например, front не требует регистрации пользователя). Эта часть хороша особенно для создания групп маршрутов и фильтров (но также и для согласования каждого элемента системы).

  3. {module} а также {submodule} - расскажет вам, в какой бизнес-логике вы находитесь.

  4. {action} - это просто название действия контроллера

Так что здесь у вас есть такие же примеры выше:

route('mypostpackage.admin.post.index')
route('mypostpackage.admin.post-comment.edit', [$id])

view('mypostpackage::admin.post.show') // in package: views/admin/post/index.blade.php
view('authpackage::restricted.user-address.edit')

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

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

Другие вопросы по тегам