0

嗨,我在添加视图中动态添加了输入字段。当我提交表单时,我希望将所有输​​入字段连接成一个字符串并存储在单个数据库字段中。

我试图使用 cakephp 的 beforeSave 方法来实现这一点,但我似乎无法找到如何获取模型中文本字段的值。

function beforeSave($options)
{
    $result = '';
    $bool = true;
    $counter = 0;

    while($bool == true)
    {
    $result = $result + ',' + $this->data['Variable']['selectOptions' + counter];
    }

    return true;
}

有人对如何实现这一目标有任何想法吗?

提前致谢。

4

4 回答 4

1

在我看来(从 MVC 的角度来看)最好在控制器中连接字段,然后在保存模型之前取消设置不必要的字段......

于 2012-09-03T11:36:23.893 回答
0

在模型中获取帖子值后,您可以将数组值合并为一个像这样的变量..

<?php 
   $var = array('test1','test2','test3','test4','test5','test6');
   $new_values = implode(',',$var);
   echo $new_values;
?>

您可以在保存到数据库后检索这些值。

于 2012-09-03T11:38:39.183 回答
0

这可能不是完美的答案,但可能会让您在这个方向上取得领先

function beforeSave($options = array()) {

    pr($this->data); // <= show data you intend to save
    exit;
}

使用 foreach 循环数据数组($this->data)并对值执行连接并将连接的字符串分配给字段名称

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 ;
}
于 2012-09-03T11:46:13.787 回答
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']);
    }  
}
于 2012-09-03T12:43:34.753 回答