在表单提交之前保存关联的模型数据

时间:2013-09-12 05:39:02

标签: cakephp

我在Article和Image(附件模型的别名)ala https://github.com/josegonzalez/upload之间有一个多态附件模型。文章有很多图片。图像是附件。

当通过文章表单的保存按钮提交表单时,所有内容都会正确保存,包括关联的模型。

但是,我已经设置了附加图像的动态显示,以便用户可以在保存文章之前选择用于文章预览的文件。动态图像显示工作(通过删除phpMyAdmin中的行证明),但我无法弄清楚如何上传和保存已选择的关联图像而不按提交按钮。我想在选择后立即上传图片(或按下不提交文章的按钮!

以下是相关的表单部分,以及最终导致显示所有相关图像的脚本。

<div id='imagesControl'>
<?php
//TODO gotta make this happen live
echo $this->Form->input('Image.0.attachment', array('type' => 'file', 'label' => 'Image'));
echo $this->Form->input('Image.0.model', array('type' => 'hidden', 'value' => 'Content'));
echo $this->Form->input('Image.0.foreign_key', array('type' => 'hidden', 'value' => $id));
echo $this->Form->input('Image.0.id', array('type' => 'hidden')); //Thought this would help
?>
<div id='attachedImages'>
</div> </div>

<script>
$(document).ready(function() {
$('#imagesControl').change(function() {window.alert("sometext");
    $("#attachedImages").load('../imageDisplay/<?php echo $id ?> #attachedImages', 
        {id: $(this).attr('id')});
    })
.change();
});
</script> 

值得注意的是,在呈现的视图文件'../ imageDisplay'中,$this->data 包含通过$(this).attr('id').发送的div ID我无法在任何地方找到变量,它包含我在表单保存之前在输入部分选择的文件(我正在尝试上传和保存的文件)。它显然存在,因为它确实使用$this->Article->saveAll()自动保存。

然而,我甚至无法开始猜测我在何时/何时/如何上传图像并在包含新图像数据的附件表中添加行而不提交文章。我已经被困了好几天了。

0 个答案:

没有答案