Auth Routes / Views в пакете Laravel?

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

Я попытался добавить папку Auth в каталог ресурсов / представлений, а также необходимые контроллеры в каталоге моего пакета с соответствующими пространствами имен. Он попадает в контроллеры, но не видит представления, так как возвращает ошибку о том, что [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, а не пакет.

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


person Miura-shi    schedule 02.09.2016    source источник


Ответы (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. Он будет описывать уровень доступа пользователя (например, фронт не требует авторизованного пользователя). Эта часть особенно хороша для создания групп маршрутов и фильтрации (но также для гармонизации каждого элемента системы).

  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')

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

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

person Filip Koblański    schedule 02.09.2016
comment
Спасибо! Я реализовал в своем пакете следующую структуру, и она была очень чистой. - person Miura-shi; 04.09.2016