CakePHP:将多个复选框输入提交到数据库中

2024-02-11

我在 Cakephp 表单中有一个复选框,可以有多个值。视图中:

<?php // Multiple checkbox form
        echo $this->Form->input('report_types', array(
        'type'=>'select',
        'label'=>'Report Type(s)',
        'multiple'=>'checkbox',
        'options'=>array(
            'option 1'=>'option 1',
            'option 2'=>'option 2',
            'option 3'=>'option 3',
        ),
)); ?>

当我将其加载到数据库中时,它返回“未找到列:1054“字段列表”中的未知列“数组””错误,因为它试图在应该是字符串的位置添加数组。

我尝试过转换any of the $this->request->data它以数组形式转换为字符串,但这会干扰我之前在表单中选择的日期(它们也存储为数组)。

我还尝试将多个复选框字段的值转换为beforeValidate()模型中的方法,但它需要太多重复,并且当我需要“解压”数据时会变得混乱:

<?php class Request extends AppModel {
    ...
    function beforeValidate() {
        if(!empty($this->request->data['Request']['attachment_types'])) {
            $this->data['Request']['attachment_types'] = implode(',', $this->data['Request']['attachment_types']);
        }
        if(!empty($this->request->data['Request']['report_types'])) {
            $this->data['Request']['report_types'] = implode(',', $this->data['Request']['attachment_types']);
        }
        // Am I going to have to keep adding if-statements here? 
        }?>

此外,!empty()方法不起作用,因为该字段永远不会为空(由于 CakePHP 进行复选框输入时自动创建的隐藏字段)。

有谁知道如何将多个复选框输入提交到数据库中?这似乎是一个相当温和的请求... CakePHP 在这方面有任何“自动魔法”技能吗?


为了解决这个问题,我将数组中的数据类型更改为一组,其选项定义为('option 1','option 2','option 3)在我的数据库中。如果您的数据库中没有“set”数据类型,也没关系。然后我修改了我的beforeValidate()函数来序列化数据。

<?php class Request extends AppModel {
...
function beforeValidate() {
    if($this->request->data['Request']['attachment_types']!=0) {
        $this->data['Request']['attachment_types'] = implode(',', $this->data['Request']['attachment_types']);
    }
    if($this->request->data['Request']['report_types']!=0) {
        $this->data['Request']['report_types'] = implode(',', $this->data['Request']['report_types']);
    }
    // Yes, I will just have to keep adding if-statements :(
    }?>

请注意,在上面的示例中,我有两个带有复选框的字段(“report_types”和“attachment_types”),这解释了为什么我有两个 if 语句。

感谢 JvO 的帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CakePHP:将多个复选框输入提交到数据库中 的相关文章

  • Facebook API 注销我的应用程序,但不注销 Facebook

    如何使用 Facebook 的 api 进行注销 让我退出我的应用程序 网站 但保持登录 facebook com 的状态 这让我登录正常 window fbAsyncInit function FB init appId status t
  • 在数据库中存储差异的最紧凑方式是什么?

    我想实现类似于维基媒体的修订历史的东西 最好使用的 PHP 函数 库 扩展 算法是什么 我希望差异尽可能紧凑 但我很高兴只能显示每个修订版与其同级修订版之间的差异 并且一次只能回滚一个修订版 在某些情况下 只有几个字符可能会发生变化 而在其
  • 如何使用 php 通过 https 下载文件

    我需要使用 PHP 下载 xml 文件 我可以在对文件进行curl 调用时通过设置以下选项来读取文件的内容 curl setopt http CURLOPT SSL VERIFYPEER false curl setopt http CUR
  • 如何获取与 PHP 中的日期数组相比最接近的日期

    这个帖子 https stackoverflow com questions 11012891 how to get most recent date from an array of dates几乎为我回答了这个问题 但我有一个特定的需求
  • 运行 shell 命令并将输出发送到文件?

    我需要能够通过 php 脚本修改我的 openvpn 身份验证文件 我已将我的 http 用户设置为免通 sudoer 因为这台机器仅在我的家庭网络中可用 我目前有以下命令 echo shell exec sudo echo usernam
  • TCPDF 为一个文档中的不同页面设置不同的页眉

    有没有办法使文档中第一页的页眉徽标和第二页的页眉徽标不同 我认为在添加页面之间更改标题数据可能会解决问题 但在我的测试中 添加第一页后设置标题似乎没有效果 other stuff pdf gt setHeaderFont array PDF
  • PHP 生成文件供下载然后重定向

    我有一个 PHP 应用程序 它创建一个 CSV 文件 强制使用标头下载该文件 这是代码的相关部分 header Content Type application csv header Content length filesize NewF
  • Apache“无法初始化模块”,因为更改 PHP 配置后模块和 PHP 的 API 不匹配

    php v 给出了这个 PHP Warning PHP Startup memcache Unable to initialize module Module compiled with module API 20060613 PHP co
  • PHP exec rm -Rf 不适用于子目录

    我试图删除特定文件夹中的所有内容 但它似乎不会影响子文件夹 但它应该 因为 bash 命令是从控制台执行的 system rm Rf some dir 该命令中不需要星号 如果要与文件一起删除目录 请同时删除斜杠 留下斜杠将删除文件 但保留
  • 脚本超时已过,如果要完成导入,请重新提交相同的文件,导入将恢复

    我有一个数据库 拉开拉链后的尺寸50mb拉链尺寸7mb所以当我尝试导入数据库时zipped 7mb 几分钟后 它抛出此错误 脚本超时已过 如果您想完成导入 请resubmit相同的文件和导入将恢复 我已经重新提交了 但仍然没有导入全部数据
  • 简单 php 脚本找不到对象错误

    每次我点击提交按钮在网页中处理此代码时 它都会转到 未找到对象 404 错误 页面 它发生在我的一些脚本中 我不知道问题的根源是我的本地主机 Xampp 还是我的代码 if isset POST submit require dbc php
  • 如何获取共同好友列表

    你好 我想知道如何才能找到共同的朋友 我目前在思考这个问题时遇到问题 我有一个名为 users 的表 它是这样的 id name 1 Kenny 2 Jack 3 Jimmy 4 Chris 5 Meg 6 Jake 7 Micheal 8
  • 如何在 Laravel 5.3 中进行自定义身份验证

    我在 Laravel 5 3 自定义身份验证中遇到问题 希望在检查时使用我自己的函数或页面Auth check 它返回false 这是用户控制器 namespace App Http Controllers use App User use
  • 如何区分两个同名的多选列表

    对于我正在构建的系统 我需要查看第一个列表中出现了哪些选项 通过 POST 请求 以及第二个列表中出现了哪些选项
  • drupal 7 将实际内容存储在数据库中的哪里?

    我打开了 drupal 7 的数据库并在表中查找node node revisions and node types并且找不到 drupal 存储实际的位置body节点 内容 的 有人有线索吗 哦 我刚刚找到了 在 D7 中 他们实现了字段
  • 找时间通过 PHP 执行 MySQL 查询

    我在互联网上看到过这个问题 here http www phpbuilder com board showthread php t 2100256 and here http answers yahoo com question index
  • 如何在按钮上执行mysql [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions PHP 单击按钮时如何执行 SQL
  • php_network_getaddresses: getaddrinfo 失败: 名称或服务未知 (0) 连接失败..!

    我正在使用 php 邮件程序功能 但出现以下错误 如何修复它 2016 01 22 06 15 48 SMTP 错误 无法连接到服务器 php network getaddresses getaddrinfo失败 名称或服务未知 0 连接失
  • https 重定向 laravel .htaccess 之后删除 /public

    我有一个 Laravel 页面部署在共享主机中 当我强制 http 请求重定向到 https 时 url 包含 public 我的根 htaccess 是 RewriteEngine on RewriteCond REQUEST URI p
  • PHP 7.2 计数错误

    警告 count 参数必须是数组或对象 实现 Countable in 我在以下行中收到上述错误 if 0 gt count this gt xprop 有人可以帮助我理解这一点吗 我对 PHP 还很陌生 问题显然是 this gt xpr

随机推荐