1

状況

ある種のフィールドをグループ化し、入力を容易にするために、いくつかのタブに分割された大きなフォームに取り組んでいます。タブは JavaScript (jQuery) を使用してアクティブ化され、フォーム全体が送信されます (空白のフィールドがあっても、一度にすべてのタブが送信されます)。

hiddenユーザーの現在のタブを保持するために、フォームとともにフィールドを送信しようとしています。このようにして、フォームが送信されると、データが保存され、ユーザーは以前とまったく同じタブに戻ります。このフィールドは単なるヘルパーであるため、どのモデルにも関連付けられていません。

問題 + 私が試したこと

によって正しく入力され、フォームとともに送信されます。これは私がしたことです:

<?php 
echo $this->Form->create('Briefing', array('enctype' => 'multipart/form-data'));

    // This is my aux field, which is populated via jQuery as user switch tabs
    echo $this->Form->hidden('tab-active', array('name' => 'tab-active', 'id' => 'tab-active')); 

    echo $this->Form->input('title');
    echo $this->Form->submit('Save', array('class' => 'btn btn-success'));

echo $this->Form->end(); 
?>

ユーザーが「タブ #4」のときにフォームを送信したとします。私debug($this->data);がにいるときBriefingsController、これは私が得るものです:

/app/Controller/BriefingsController.php (line 133)
array(
    'tab-active' => 'tab-4',
    'Briefing' => array(
        'title' => 'My test title'
    )
)

したがって、コントローラーはtab-activeBriefing.titleフィールドの両方のフォーム データを受け取りますが、送信後にフォームが読み込まれると、送信されたデータがモデル フィールドにのみ入力され、tab-active値が空になります。CakePHPは、モデルに添付されていないフィールドの値を自動入力しません

それについて何か考えはありますか?これはデフォルトの CakePHP の動作ですか、それとも機能させるためにできること (自動入力) はありますか? 私はjQueryに問題はありません(すでにいくつかの方法でテストしています)。実際の問題は、フォーム送信後にこのフィールドに値が入力されることです。どんな助けでも大歓迎です。

4

1 に答える 1

1

CakePHP は、フォームのモデルのデータをフォームに取り込みます。したがって、「ブリーフィング」作成用のフォームを作成すると、CakePHP は $this->data['Briefing'] 配列を見て、この配列に存在するフィールドに一致する入力を入力します。非表示の 'tab-active' フィールドが 'Briefing' フォームの作成内に存在するため、CakePHP は 'Briefing' モデルに 'tab-active' 属性があることを期待します。

だから私の推測では、あなたの $this->data 配列は次のようになるはずです:

array(
    'Briefing' => array(
        'tab-active' => 'tab-4',
        'title' => 'My test title'
    )
)
于 2013-10-09T08:33:34.900 に答える