如何在Bolt CMS中运行自定义PHP代码?
问题描述:
我想要做的是有一页列出我的数据库中的一些数据(数据与Bolt分开)。如何在Bolt CMS中运行自定义PHP代码?
我已经看过扩展,但我没有看到任何方式来制作一个“页面”,只创建“片段”。但片段实际上不会显示在内容区域中,您只能在<body>
标签后面或在<head>
之后添加它们。此外,它看起来像他们出现在每一页,而不是在页面上。
是否可以在页面上运行一些自定义PHP代码以从数据库中获取一些数据并显示它?有没有人有一个赤裸裸的例子?
答
这是扩展的用途,但片段不是你想要的。
博尔特是Silex的应用,并带有一个学说DBAL供应商,所以你可以只使用$app['db']
给你访问到\Doctrine\DBAL\Connection
对象,你可以用它来查询您的表格,例如
$resultArray = $this->app['db']->createQueryBuilder()
->select('*')
->from($tableName)
->where('my_column_1 = :my_column_value_1')
->andWhere('my_column_2 = :my_column_value_2')
->orderBy('my_column_3', 'DESC')
->setParameter(':my_column_value_1', $value1)
->setParameter(':my_column_value_1', $value2)
->execute()
->fetch(\PDO::FETCH_ASSOC);
然后,你可以做你想要的数据,并在你认为合适的时候在Twig中渲染它。
有文档上creating extensions with Twig functions一吨,你可以把一个模板{{ my_twig_function() }}
好吧,我明白了数据库的东西,使树枝的功能,但我仍然失踪这一切是如何结合在一起的。我从哪里调用Twig函数?我是否需要在我的page.twig中执行类似'{%if page =='mypage'%} {{my_twig_function()}} {%endif%}'的操作?看起来有点哈克让我乱扔模板。 – DisgruntledGoat
在您使用的ContentType中,您可以指定一个'templateselect'字段类型,它将为您提供一个选择框来选择您想要的记录模板。你只有一个Twig文件,它可以继承另一个模板中的块,但具有你的Twig函数。 – Gawain
谢谢!这也意味着我只能使用Twig函数来检索数据,并将实际的HTML输出保留在模板中。 – DisgruntledGoat