当用户添加事件时,他们需要能够将“波段”表中的波段添加到事件中。它已经全部设置了HABTM,当我将多个选择框硬编码到页面时,我就可以使用它。
问题是 - 我想只有一个选择框,然后是“添加另一个乐队”按钮 - 这将添加带有乐队列表的另一个选择输入 - 依此类推 - 尽可能多的他们喜欢
我发现这篇文章:Add and remove form fields in Cakephp解释了如何动态添加一个字段...我的问题是,乐队列表很大,而且经常更改,所以我无法想象这对我有用。
关于最佳方式的任何想法? - 动态添加一个选择输入,其中填充了我的数据库中的波段列表?阿贾克斯可能吗? (我不知道如何用蛋糕做ajax)Ajax似乎没问题,但每次用户点击“添加乐队”按钮时,我真的想要拉出乐队列表吗?也许那没关系?
非常感谢任何帮助/方向。代码示例将是伟大的,但如果没有别的,在正确的方向轻推将是非常有帮助的。
答案 0 :(得分:3)
您可以使用带有“添加波段”按钮的单个选择输入。当用户点击“添加乐队”时,使用javascript捕获事件,将选定的乐队复制到列表(可视化),并将id添加到隐藏输入(在提交表单时使用)。下面的jQuery / CakePHP示例。
<ul id='band_list'></ul>
<?php echo $form->create('Event', array('id'=>'event_form'));?>
<?php echo $form->input('band_ids', array('type'=>'hidden', 'id'=>'band_ids')); ?>
<?php echo $form->input('bands', array('type'=>'select', 'options'=>$bands, 'id'=>'bands_selector')); ?>
<button id='add_band'>Add Band</button>
<script type='text/javascript'>
var band_count = 0;
$('#add_band').click(function(event) {
event.preventDefault();
$('<li>' + $('#bands_selector option:selected').text() + '</li>').appendTo('#band_list');
$('<input type="hidden" name="data[Band][Band]['+band_count.toString()+']" value="'+$("#bands_selector option:selected").val()+'">').appendTo('#event_form');
band_count++;
});
</script>