0

こんにちは、追加ビューに入力フィールドを動的に追加しました。フォームを送信するときは、すべての入力フィールドを1つの文字列に連結して、単一のデータベースフィールドに格納する必要があります。

私は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

これは完璧な答えではないかもしれませんが、その方向への有利なスタートを切ることができるかもしれません

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 に答える
0

モデルでポスト値を取得した後、配列値をこのように単一の変数にマージできます..

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

これらの値は、データベースに保存した後に取得できます。

于 2012-09-03T11:38:39.183 に答える