在 Laravel 包中验证 Routes/Views?

Auth Routes/Views in Laravel Package?

我一直在为 Laravel 5.2 开发自定义包,现在我正在实施身份验证。

我尝试将 Auth 文件夹添加到我的 resources/views 目录以及我的包目录中所需的具有适当命名空间的控制器。它击中了控制器,但没有看到视图,因为它 returns 错误提示 [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 包中设置 Auth 视图、路由等的最佳 practice/proper 方法是什么,以便它可以拥有自己的管理区域?

有很多策略,这取决于应用程序的大小(以及大小)。我可以给你一个命名的例子。

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} - 你应该总是放在前面,你每次都会知道包 view/route/config 来自什么。

  2. {area} - 例如可以是:admin and user and front or restricted and 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')

这也可用于设计文件的结构(视图和控制器以及您在此约定中使用的任何其他应用程序逻辑)。

请记住,这只是设计的基础,因此您可以根据需要重新设计它。