gpt4 book ai didi

CakePHP HABTM 表单提交

转载 作者:行者123 更新时间:2023-12-04 06:28:49 25 4
gpt4 key购买 nike

我有两张 table ,questionstags ,具有 HABTM 关系。添加问题时,我希望能够为问题指定一个标签(这只是第一个标签,以后可以添加更多标签)。标签是从他们的 table 上拉出来的。如何配置我的应用程序,以便在添加问题并指定标签时,联接反射(reflect)在联接表 ( 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'));
}

这是我的问题添加 View 代码:
<?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 关系的事实(因为您希望以后有可能添加更多标签)。

如果您的 $this->data数组是根据以下架构构建的:

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

然后是 $this->Question->save()将保存问题数据以及相关的标签数据(在这种情况下,问题是带有 id 1、2 和 3 标签的问题“技巧问题”)。

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

关于CakePHP HABTM 表单提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5699760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com