您好我在添加视图中动态添加了输入字段。当我提交表单时,我希望所有输入字段连接成一个字符串并存储在单个数据库字段中。
我试图使用cakephp的beforeSave方法实现这一点,但我似乎无法找到如何在模型中获取文本字段的值。
function beforeSave($options)
{
$result = '';
$bool = true;
$counter = 0;
while($bool == true)
{
$result = $result + ',' + $this->data['Variable']['selectOptions' + counter];
}
return true;
}
有关如何实现这一目标的任何想法吗?
提前致谢。
答案 0 :(得分:1)
在我看来(从MVC的角度来看)最好连接控制器中的字段,然后在保存模型之前取消设置不必要的字段......
答案 1 :(得分:0)
获取模型中的post值后,您可以将数组值合并为单个变量,如此..
<?php
$var = array('test1','test2','test3','test4','test5','test6');
$new_values = implode(',',$var);
echo $new_values;
?>
保存到数据库后,您可以检索这些值。
答案 2 :(得分:0)
这可能不是一个完美的答案,但可能会给你一个良好的开端
function beforeSave($options = array()) {
pr($this->data); // <= show data you intend to save
exit;
}
使用foreach循环数据数组($ this-&gt; data)并对值执行连接并将连接的字符串分配给feild名称
function beforeSave($options = array()) {
foreach ($this->data['Variable'] as $key=>$value)
{
$feildflag = strstr($key, 'selectOptions');
if($feildflag){
$concatenatedstring .= $value;
}
}
$this->data['Variable']['your_feild_name'] = $concatenatedstring ;
}
答案 3 :(得分:0)
您的动态表单字段应该在foreach循环中显示:
<?php echo $this->Form->input('Model.field][', array());
在你的模特中:
function beforeSave($options)
{
if(!empty($this->data))
{
$this->data['Model']['common_field'] = implode(",", $this->data['Model'['field'];
unset($this->data['Model']['field']);
}
}