php - 如何仅在组件类或插件上在十月 CMS 上创建中间件?
问题描述
我在 10 月的信息上阅读了 doku 并搜索了中间件,但没有找到我可以提供的帮助。
我的问题:我创建了插件并使用 RainLab 用户插件进行内容的前端编辑。前端内容溢出到部分、组和文章上。单个用户成为不同的访问权限:隐藏、显示、编辑部分和文章等。该网站使用一个插件来动态加载内容。
我如何通过访问配置为单个用户加载内容?
我的解决方案:
我在后端添加了一些功能来为用户提供访问权限。 rainlab 用户内容访问
所有访问配置都已保存并可以正常工作。我的想法是创建中间件来加载内容,但我找不到任何可以帮助我的东西。
Docu 告诉我您可以创建中间件,但中间件始终加载在前端、后端和网站上的所有页面上。这不是一个好的解决方案。 https://octobercms.com/docs/backend/controllers-ajax#controller-middleware
另外,如果我在中间件上调试,那么rainlab 用户功能不起作用,没有关于 url 请求的信息。
当必须自己加载和创建所有类和函数时,为什么要添加中间件?
我只需要前端的中间件,只需要插件或组件。我希望有人可以帮助我找到另一个解决方案或解决它的想法。
我认为除了在 onRun 函数的各个组件中实现内容访问外,别无他法。:( 这个解决方案的问题是:返回重定向在类或函数之外不起作用(仅在 onRun 上)
解决方案
您的方法存在问题,如您所愿middleware
,并且您希望确保它针对特定插件和组件运行。middleware
基于request
和请求工作可能有关于 URL 等的信息,但没有关于插件和组件等的信息,因此它无法根据插件等确定何时运行..`
所以你可以使用不同的方法。它也适用
Frontend
于ajax requests
.
您可以component
在插件中创建,如果用户登录,它将assessment
全部access
用于登录用户。如果用户未登录,您可以提供不同的assessment access
.
现在您需要将此组件添加到您的组件中,layout
并且从一开始now all pages
就使用this layout
此组件。access information
现在这个组件inject access information to page
,所以你的页面和插件的组件可以随时获得这些信息。现在从您的组件内部onRun
,您可以在最顶部处理重定向。
组件不是定义访问,它只是将预定义的访问信息注入数据库中[正如您所说,您使用用户插件,所以获取它并注入它]到页面
组件将专门将访问信息注入页面。并且该组件将在布局上。它会自动触发该布局页面。所以它会首先执行,然后你可以决定如何使用它。您还可以基于此渲染条件组件。因为您也可以在标记部分访问信息,所以
如果您有任何疑问或问题,请发表评论。
推荐阅读
- c# - 如何使用 SharePoint Webhook 检索通知信息
- shell - unix shell - 检查文件是否存在,名称中包含 YYYY-MM-DD
- sql - case when in case when 作为计算列
- java - WELD-000710:无法在 Servlet 请求之外注入 HttpServletRequest
- aem - 如何将创作的内容数据复制到 AEM 中的 html 表单中
- spring - 标头大小为 8192 字符 (8KB) 时 Tomcat 抛出错误
- python - 不同时期的快速傅里叶变换(阶次分析)
- r - 滚动 3 个月总和
- image - 即使在 pubspec.yaml Flutter 中指定了资产,图像也未在 GridView 中显示
- java - 如何找到双变量的 log 2 基数?