首页 > 解决方案 > 如何在 cakephp 3 中创建选项页面

问题描述

我正在尝试创建一个选项页面,我想知道如何保存该页面上的设置。我知道如何使用表单创建一个普通页面,通常该表单中的每个字段都是数据库中的一列。

但是对于选项页面,每个设置(例如布局、颜色、字体等)应该是每行或作为数组存储在数据库中。

有人做过吗?

编辑澄清

我想要一个如下的数据库表:

id | setting_name | setting_value
---|--------------|--------------
1  | page_bg      | #FFFFFF
2  | page_width   | full

形式应该是这样的:

<form>
    <label for="page_bg">Page background color</label>
    <input id="page_bg" name="page_bg" type="text" />
    <label for="page_width">Page Layout</label>
    <select id="page_width" name="page_width">
        <option value>Select layout</option>
        <option value="full">Full</option>
        <option value="medium">Medium</option>
    </select>
</form>

我有一个选项页面,所有设置都已显示为表单(类似于 wordpress 中的主题)。

标签: cakephpcakephp-3.0

解决方案


这看起来很简单,是多个实体的一种形式。使用命名方案,如

echo $this->Form->hidden('settings.0.setting_name', ['value' => 'layout']);
echo $this->Form->input('settings.0.setting_value');
echo $this->Form->hidden('settings.1.setting_name', ['value' => 'color']);
echo $this->Form->input('settings.1.setting_value');

如果您正在编辑现有设置而不是创建新设置,则将setting_name字段替换为id

在您的控制器中,您将执行patchEntities()and saveMany()

你也可以看看这个插件来寻找灵感,或者在你的项目中使用。


推荐阅读