cakephp在模型中获取textfield的值

时间:2012-09-03 11:23:21

标签: php cakephp cakephp-appmodel

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

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

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

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

    return true;
}

有关如何实现这一目标的任何想法吗?

提前致谢。

4 个答案:

答案 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']);
    }  
}