0

私はいくつかの短い News を含むウェブサイトを持っています。すべてのニュースに対して、フォームからコメントを書くことができます。そして、私の問題が発生します。1 つのフォームにフィールドを入力すると、ボタンを押した後、すべてのフォームが保存せずにリロードされ、すべてのフォームのすべてのフィールドに入力する必要があるため、それらは 1 つの部分のように扱われます。

追加情報 ( Info はニュースを含むメインのモーダルで、Com モーダルと結合されています)

index.ctp フォーム

<br><h5>Add comment:</h5><br>
                <?php echo $this->Form->create('Com'); ?>
                <?php echo $this->Form->input(__('mail',true),array('class'=>'form-control')); ?>
                <?php echo $this->Form->input(__('body',true),array('class'=>'form-control')); ?>
                <?php $this->request->data['ip'] = $this->request->clientIp(); ?>
                <?php $this->request->data['info_id'] = $info['Info']['id']; ?>
                <?php echo $this->Form->submit(__('Add comment',true),array('class'=>'btn btn-info')); ?>
                <?php $this->Form->end(); ?>

コントローラー ComsController.php

public function add()
{
    if($this->request->is('post'))
    {
        $this->Infos_com->create();
        $this->request->data['Infos_com']['ip'] = $this->request->clientIp();
        $this->request->data['Infos_com']['id_infos'] = $number;
        if($this->Infos_com->save($this->request->data))
        {
            $this->Session->setFlash(__('Comment is waiting for moderating',true),array('class'=>'alert alert-info'));
            return $this->redirect(array('controller'=>'Infos','action'=>'index'));
        }
        $this->Session->setFlash(__('Niepowodzenie dodania komentarza',true),array('class'=>'alert alert-info'));
        return TRUE;
    }}

モデルCom.php、フォームのすべてのフィールドに入力する必要を避けるために行にコメントを付けます

class Com extends AppModel
{
public $belongsTo = array('Info');
/*public $validate = array(
    'mail'=>array(
        'requierd'=>array(
            'rule'=>array('notEmpty'),
            'message'=>'Write your email'
        )
    ),
    'body'=>array(
        'required'=>array(
            'rule'=>array('notEmpty'),
            'messages'=>'Write smth'
        )
    )
); */
}
4

1 に答える 1

0

ビューで $this->request->data にアクセスできないと思います (データはフォームで入力する必要があり、送信されませんでした)。隠しフィールドを使用して、IP od id などの引数を渡す必要があります... 例:

echo $this->Form->input('Infos_com.client_id', array( 'type' => 'hidden', 'value' => $value ));

複数のフォームがある場合は、フィールドを区切ると便利です。例えば:

echo $this->Form->input('Infos_com.' . $news_id . '.body', array('label' => __('body')));

このようにして、次のような配列を取得します。

$this->request->data['Infos_com'][$news_id]['body'].

そして、モデルでロジックを作成できます。

于 2013-11-14T16:15:25.210 に答える