【问题标题】:How to create an options page in cakephp 3如何在 cakephp 3 中创建选项页面
【发布时间】:2019-03-26 20:21:35
【问题描述】:

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

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

有人做过吗?

编辑澄清

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

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 中的主题)。

【问题讨论】:

    标签: cakephp cakephp-3.0


    【解决方案1】:

    这似乎是一个非常简单的多个实体的表单。使用像

    这样的命名方案
    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()saveMany()

    您还可以查看this plugin 以获得灵感或在您的项目中使用。

    【讨论】:

    • 抱歉回复晚了。谢谢你的顺便说一句。我已经更新了我的问题。
    • 您真的需要使用这样的字段名称,还是只适合您的个人喜好?如果是后者,我建议调整您的偏好比编写代码来匹配它们要容易得多。
    • 我总是以这种方式使用字段名称,所以我很容易知道从 db 中检索它们时它们的用途。目前我不知道如何共谋这件事。如果您有任何建议,那就太好了。
    • 约定很有用,除非它们妨碍编写简洁的代码。我认为这里就是这种情况。我认为在这种情况下让这种特殊偏好消失会更好。如果您遵循我发布的代码(我已使用您的列名对其进行了更新),则名称字段会显示随附值的用途,而不是输入名称本身。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 2018-12-08
    • 1970-01-01
    相关资源
    最近更新 更多