CakePHP HABTM 表单提交

2023-11-30

我有两张桌子,questions and tags,具有 HABTM 关系。添加问题时,我希望能够为问题指定一个标签(这只是第一个标签,以后可以添加更多标签)。标签是从他们的桌子上拉出来的。如何配置我的应用程序,以便在添加问题并指定标签时,连接反映在连接表中(questions_tags)?

这是我的问题添加操作代码:

function add() {
    $tags = $this->Question->Tag->find('all');
    $this->set('tags',$tags);

    if (!empty($this->data)) {
        $this->Question->create();
        if ($this->Question->save($this->data)) {
            $this->Session->setFlash(__('The question has been saved', true));
            $this->redirect(array('action' => 'index'));
        } else {
            $this->Session->setFlash(__('The question could not be saved. Please, try again.', true));
        }
    }
    $users = $this->Question->User->find('list');
    $tags = $this->Question->Tag->find('list');
    $this->set(compact('users', 'tags'));
}

这是我的问题添加视图代码:

<?php 
    echo $this->Form->create('Question');
    echo $this->Form->input('user_id',array('type' => 'hidden', 'value' => $this->Session->read('Auth.User.id')));
    echo $this->Form->input('title');
    echo $this->Form->input('details',array('type' => 'textarea'));
    echo $this->Form->input('tag_id');
    echo $this->Form->end(__('Submit', true));
?>

首先确保您的模型设置正确。用户最初只向您的问题添加一个标签这一事实并不会改变您在问题模型和标签模型之间应该具有 HABTM 关系的事实(因为您希望以后可以添加更多标签)。

If your $this->data数组是根据以下模式构建的:

$this->data = array(
  'Question' => array(
    'name' => 'Trick question'
  ),
  'Tag' => array(
    'Tag' => array(1,2,3)
  )
);

Then a $this->Question->save()将保存问题数据以及相关标签数据(在本例中为问题“Trick Question”,标签 ID 为 1、2 和 3)。

也许退后一步,(再次)烘焙这两个模型的模型、视图和控制器,看看 Cake 用它做出什么。如果我是对的,你只需要一个$this->Form->input('Tag')表单中的某处(如果没有自动填写正确的数据,您需要填写options参数与结果$this->Question->Tag->find('list')).

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

CakePHP HABTM 表单提交 的相关文章

随机推荐

  • 如何修复 Swift NSTimer 调用其选择器时出现的错误

    我收到以下运行时错误 2014 07 15 16 49 44 893 TransporterGUI 1527 303 TtC14TransporterGUI11AppDelegate printCountdown 无法识别的选择器发送到实例
  • Android - 分割可绘制对象

    我正在尝试将图像分割成多个部分 例如 16 个块 4x4 我发现了很多java的例子 但是Android没有BufferedImage等等 我想 我对如何做有一个不错的想法 但我真的不知道从哪里开始 我应该使用位图还是可绘制的 有没有一种分
  • Linux 中是否有可以唯一标识 VM 实例的 UUID 类型值?

    我有一个在 Linux 中运行的应用程序 每个人都会尝试从操作系统获取 UUID 并向中央服务器报告 我想确保所有实例都使用全局唯一的 UUID 运行 如果 Linux 位于裸机上 则它只能读取 UUID 例如 从 dmidecode 命令
  • 解析 Coldfusion 字符串内的变量

    我的客户有一个电子邮件正文数据库表 这些电子邮件正文在特定时间发送给客户 电子邮件的文本包含 ColdFusion 表达式 例如 Dear firstName 等 这些电子邮件是 HTML 它们还包含各种 HTML 标记 我想做的是将数据库
  • 展平嵌套元组

    我有一个元组列表 其中一些是嵌套的 name 6 9 0 2 4 link name 7 8 9 0 5 link 我想取消列表中每个项目的内部元组的嵌套 但保留外部元组 name 6 9 0 2 4 link name 7 8 9 0 5
  • 使用 Android Studio 构建简单的 Android 应用程序时出现 java.security.NoSuchAlgorithmException

    我下载了 Android Studio 并尝试构建一个简单的登录活动 但 Make 项目因此错误而失败 Environment Windows 7 64 bit 摇篮 写入输出时遇到问题 java security NoSuchAlgori
  • Vista/7 UAC:如何降低进程权限

    进程是否可以将自身从提升的 UAC 权限降低回标准用户 如果不是 提升的进程是否可以使用标准用户令牌启动其副本 然后自行终止 有代码示例吗 C 优先 Details 问题 用户安装我的产品 用 C 编写 安装程序将其 UAC 权限提升为管理
  • 如何杀死Android中当前正在运行的任务

    我正在尝试在 Android 中构建一个任务杀手类型的应用程序 我可以使用显示当前正在运行的任务列表活动管理器但在杀死任务时面临问题 这是我正在做的获取当前正在运行的任务列表的操作 ActivityManager am ActivityMa
  • 无需按 CTRL 键即可多选列表框

    我认为这很容易做到 但我找不到方法 我有一个列表框 选择模式设置为多个 但用户希望能够选择多个项目而不必按 CTRL 有谁知道一个简单的方法来做到这一点 谷歌了一下 发现以下内容 http www erichynds com jquery
  • 使用 jquery.append 时如何防止 XSS/注入?

    我正在为我网站上的用户制作一个 JavaScript 代码编辑器 我构建的功能之一是自定义控制台 用户可以在代码中编写 console log 记录的字符串将附加到页面上的 div 中 执行如下操作 function toConsole s
  • 如何在 Swift 3 中将核心数据导出到 CSV?

    我想导出我的实体 Log 的所有数据 我找到了这个代码示例 https gist github com kenechilearnscode 2d5d35f550f593332319但这对我不起作用 它不添加核心数据的数据 我得到的唯一输出是
  • 在登录时将多个身份验证提供商与 Firebase 链接

    我希望在用户登录应用程序时链接多个身份验证提供商 Firebase 文档提供了一种将新的身份验证提供程序与已登录的身份验证提供程序链接的方法 但我希望在登录 注册时进行链接 以便用户可以选择任何身份验证提供程序 而无需手动链接它们 对此有何
  • Python正则表达式匹配所有5位数字但不匹配更大的数字

    我正在尝试将分布在 HTML 网页中的 5 位优惠券代码进行字符串匹配 例如 53232 21032 40021等等 我可以处理任何 5 位数字符串的简单情况 0 9 5 尽管这也匹配 6 7 8 n 位数字 有人可以建议我如何修改这个正则
  • 重新运行不稳定的 JUnit 测试,以防失败

    我在 Jenkins 中有一个工作 A 用于我的自动化测试 如果另一个工作 B 构建成功 就会触发该测试 作业 A 运行多个测试 有些测试很不稳定 所以我想再次运行它们几次 让它们有机会通过 这样我的构建就不会不稳定 失败 有什么插件我可以
  • gdb 失败并出现“无法找到进程 ID 的 Mach 任务端口”错误

    我的应用程序运行良好 但 gdb 无法调试它并出现以下错误 gdb run Starting program path to app Unable to find Mach task port for process id 83767 os
  • BLE 连接后未调用 didDiscoverServices

    我正在使用需要验证的 BLE 设备 我使用的BLE代码如下 Pragma Bluetooth Methods func centralManagerDidUpdateState central CBCentralManager if cen
  • alamofire multipartformdata 使用 urlrequest

    我想使用Alamo火多部分表单数据使用请求 例如我使用上传API let profile self photoView imageView image let parameters String String homePageUrl web
  • 如何用CSS将图像放入div中?

    我希望将所有图像都放在 CSS 中 我知道的唯一方法是将它们作为背景图像放入 但这个解决方案的问题是你永远不能让 div 占据图像的大小 所以我的问题是 最好的方法是什么 div img src div in CSS 这个答案由Jaap d
  • R 中的等值线地图 - TIGER Shapefile 问题

    有一个关于使用 R 进行绘图的问题 特别是有关 R 中的分区统计图的问题 我有一个分配给某个区域的邮政编码数据集和一些相关数据 数据集是here 我的最终数据格式是 区域 ID 邮政编码 概率值 客户计数 区域概率和区域客户总数 我试图通过
  • CakePHP HABTM 表单提交

    我有两张桌子 questions and tags 具有 HABTM 关系 添加问题时 我希望能够为问题指定一个标签 这只是第一个标签 以后可以添加更多标签 标签是从他们的桌子上拉出来的 如何配置我的应用程序 以便在添加问题并指定标签时 连