我开发了一个应用程序,它从基于 Laravel 5.5 的 API 获取数据。该应用的营销登陆页面基于 Craft CMS Version 3。营销网站以及两个系统的 API 和数据库运行在同一服务器上。
我想为 Laravel 数据库的表 X 的每一行生成登陆页面。
www.website.com/awesome-landingpage-about-{slug}
实现这一点的最佳方法是什么?
- 我不想直接从 Laravel 的数据库中获取数据
- 我不想将 Craft CMS 数据库与 Laravel 同步(从 Laravel 数据库中添加/删除行作为 Craft 的条目)
- 如果能够有一个条目类型的“登陆页面”,我们可以选择创建一个登陆页面,引用 laravel 表的 ID 并为登陆页面添加其他内容,那就太棒了。
从 Laravel 到 Craft CMS 插件的 JSON-API 是一个好的高性能想法吗?
一种选择是使用动态路由并仅从模板文件中获取 127.0.0.1(因为同一服务器)的数据?或者 Craft CMS 中有更智能的方法吗?
最佳答案
让我们开始:
- “我不想直接从 Laravel 的数据库中获取数据”
我假设您不想在 CraftCMS 中编写代码来访问另一个项目的数据库。好的。如果您打算让它们执行单独的工作并使用 Laravel API 单独获取数据,请让它处理自己的数据库。
- “我不想将 Craft CMS 数据库与 Laravel 同步(从 Laravel 数据库中添加/删除行作为 Craft 的条目)”
所以,这是我的问题:
您希望能够单独基于 Laravel 的行或基于 Laravel 的数据库行和 CraftCMS 来创建登陆页面?
这一切都取决于您想要如何很好地抽象这两个框架。
我可能会告诉 laravel 接受来自经过身份验证的用户(CraftCMS 用户)或来自本地主机(仅来自机器内部)的请求,并且我会创建端点来添加/删除/编辑/获取我可以使用的数据。然后,我从 Laravel 获取行并与我自己的行合并(假设我是 CMS)。
即使在 Intranet 网络中,告诉 Laravel 访问数据库的请求也比从 CraftCMS 访问数据库的请求要长,因此您应该预期两个项目之间存在依赖关系。
对于第 3 点,您必须在每个数据库中存储有关某些内容的信息。在 CraftCMS 上,至少要存储它将向 Laravel 请求的 ID,而 Laravel 必须获得一个可以插入新内容的端点(如果您计划在那里添加其他内容)。
当你说“为登陆页面添加额外的内容”时,我不完全确定我是否明白你想要展示的想法,但我会尽量保持它的简单和抽象,它的用途,Laravel来存储这个CMS 一开始就不应该处理的“信息”(或者您可以制定一些额外的表并将它们导入到其他数据库)。 影响性能?取决于您拥有的数据量
关于laravel - 如何使用 Craft 3 CMS 网站 "connect"Laravel 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51293731/