cakephp - 如何在 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 中的主题)。
解决方案
这看起来很简单,是多个实体的一种形式。使用命名方案,如
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()
。
你也可以看看这个插件来寻找灵感,或者在你的项目中使用。
推荐阅读
- java - Java8 Streams - 如何将内部映射的键值从“null”字符串修改为空对象
- python - 我只需要两个列表的第一个 p 标签中的文本
- javascript - 用vue动态改变body背景
- android-source - 我可以使用新的语言区域设置和键盘布局向 Android 发送提交吗?
- r - 使用正则表达式从 R 中的 pdf 文档中提取所有不同的参考选项(多个选项/捕获组?)
- ruby-on-rails - Rails EXCEPT 查询(过滤掉联合表中存在的记录)
- c# - 如何基于 Kinect SDK 中的点创建面部网格
- ibm-cloud-infrastructure - 如何使用 Node.js 连接到 IBM Cloud Databases for Redis?
- python - 为什么 web.py 找不到本地 css?
- excel - 我放弃。获取运行时错误 438 并想知道我的代码哪里有缺陷