如何“连接” Laravel项目与Craft 3 CMS网站

时间:2018-07-11 20:28:18

标签: laravel laravel-5.5 craftcms

我开发了一个应用程序,该应用程序基于 Laravel 5.5 从API提取数据。该应用程序的营销登陆页面基于Craft CMS版本3。营销网站和API以及两个系统的数据库都在同一服务器上运行。

我想为Laravel数据库的表X的每一行生成登录页面。

www.website.com/awesome-landingpage-about- {slug}

实现此目标的最佳方法是什么?

  • 我不想直接从Laravel的数据库中获取数据
  • 我不想将Craft CMS数据库与Laravel同步(添加/删除laravel数据库中的行作为Craft的条目)
  • 能够拥有一个条目类型“ Landingpage”真是太棒了,在该类型中,我们可以有选择地创建一个登陆页面,参考laravel表的ID并为该登陆页面添加其他内容。

从Laravel到Craft CMS插件的JSON-API会是个好主意吗?

一种选择是使用动态路由并仅从模板文件中从127.0.0.1(由于同一服务器)中获取数据?还是Craft CMS中有更聪明的方法?

enter image description here

1 个答案:

答案 0 :(得分:1)

让我们开始于:

  1. “我不想直接从Laravel的数据库中获取数据”

我假设您不想在CraftCMS中编写代码来访问另一个项目的数据库。好。如果您打算让它们做单独的工作,并使用Laravel API单独获取数据,则让它处理自己的数据库。

  1. “我不想将Craft CMS数据库与Laravel同步(添加/删除laravel数据库中的行作为Craft的条目)”

所以,这是我的问题: 您是否希望能够仅基于Laravel的行或基于Laravel的数据库行和CraftCMS的页面创建登录页面?
一切都取决于您要对两个框架进行抽象的程度。 我可能会告诉laravel接受来自身份验证用户(CraftCMS用户)或本地主机(仅来自计算机内部)的请求,然后创建端点以添加/删除/编辑/获取数据。然后,我将从Laravel中获取行并与自己的行合并(假设我是CMS)。 即使在Intranet网络中,告诉laravel访问数据库的请求也比从CraftCMS访问数据库的请求长,因此您应该期望两个项目之间具有依赖性。

对于第3点,您必须在每个数据库上存储有关某物的信息。在CraftCMS上,至少要存储ID,这将要求laravel,并且laravel将必须获得一个端点,可以在其中插入新内容,如果您打算在那里添加其他内容。

当您说“为着陆页添加其他内容”时,我不确定是否能理解您要显示的想法,但我会尽量使其简洁和抽象化,Laravel会存储此信息CMS最初不应该处理的“信息”(或者您可以计算出一些额外的表并将其导入到其他数据库中)。 影响力?取决于您拥有的数据量