首页 > 解决方案 > 如何仅在组件类或插件上在十月 CMS 上创建中间件?

问题描述

我在 10 月的信息上阅读了 doku 并搜索了中间件,但没有找到我可以提供的帮助。

我的问题:我创建了插件并使用 RainLab 用户插件进行内容的前端编辑。前端内容溢出到部分、组和文章上。单个用户成为不同的访问权限:隐藏、显示、编辑部分和文章等。该网站使用一个插件来动态加载内容。

我如何通过访问配置为单个用户加载内容?

我的解决方案:

我在后端添加了一些功能来为用户提供访问权限。 rainlab 用户内容访问

所有访问配置都已保存并可以正常工作。我的想法是创建中间件来加载内容,但我找不到任何可以帮助我的东西。

Docu 告诉我您可以创建中间件,但中间件始终加载在前端、后端和网站上的所有页面上。这不是一个好的解决方案。 https://octobercms.com/docs/backend/controllers-ajax#controller-middleware

另外,如果我在中间件上调试,那么rainlab 用户功能不起作用,没有关于 url 请求的信息。

当必须自己加载和创建所有类和函数时,为什么要添加中间件?

我只需要前端的中间件,只需要插件或组件。我希望有人可以帮助我找到另一个解决方案或解决它的想法。

我认为除了在 onRun 函数的各个组件中实现内容访问外,别无他法。:( 这个解决方案的问题是:返回重定向在类或函数之外不起作用(仅在 onRun 上)

标签: phppluginscomponentsmiddlewareoctobercms

解决方案


您的方法存在问题,如您所愿middleware,并且您希望确保它针对特定插件和组件运行。middleware基于request和请求工作可能有关于 URL 等的信息,但没有关于插件和组件等的信息,因此它无法根据插件等确定何时运行..`

所以你可以使用不同的方法。它也适用Frontendajax requests.

您可以component在插件中创建,如果用户登录,它将assessment全部access用于登录用户。如果用户未登录,您可以提供不同的assessment access.

现在您需要将此组件添加到您的组件中,layout并且从一开始now all pages就使用this layout此组件。access information

现在这个组件inject access information to page,所以你的页面和插件的组件可以随时获得这些信息。现在从您的组件内部onRun,您可以在最顶部处理重定向。

组件不是定义访问,它只是将预定义的访问信息注入数据库中[正如您所说,您使用用户插件,所以获取它并注入它]到页面

组件将专门将访问信息注入页面。并且该组件将在布局上。它会自动触发该布局页面。所以它会首先执行,然后你可以决定如何使用它。您还可以基于此渲染条件组件。因为您也可以在标记部分访问信息,所以

如果您有任何疑问或问题,请发表评论。


推荐阅读