0

私のアプリケーションには、データベーステーブルのコメントに連絡先メッセージを投稿できる追加アクションを備えた連絡先コントローラーがあります。検証で正常に動作します。次に、アプリケーションのすべてのページでレンダリングされるグローバルフォームとして、追加ビュー(連絡先フォーム)を使用します。

そのためには、次のように要素にフォーム(またはビューの追加)を含める必要があります。

elements / contact.ctp

<div class="panel">
    <h4><?php echo __('contact'); ?></h4>
<?php echo $form->create('Contact',array('action'=>'index', 'class' => ''));?>
<?php echo $form->input('name', array('size' => 45, 'class' => 'input-text', 'label' => array( 'text' => __('name',true).'<sup>*</sup>'), 'error' => array('class' => 'error', 'wrap' => 'small')));?>
<?php echo $form->input('email', array('size' => 45, 'class' => 'input-text', 'label' => array('text' => __('email',true).'<sup>*</sup>'), 'error' => array('class' => 'error', 'wrap' => 'small')));?>
<?php echo $form->input('subject', array('type' => 'select', 'options' => array(null => __('choose subject',true), 'g' => __('general', true), 'r' => __('report', true)), 'class' => 'input-text', 'label' => array('text' => __('subject', true).'<sup>*</sup>'),'error' => array('class' => 'error', 'wrap' => 'small'))); ?>
<?php echo $form->input('content', array('class' => 'input-text', 'style' => 'height: 140px', 'title' => __('message', true),  'label' => array('text' => __('message',true).'<sup>*</sup>'), 'error' => array('class' => 'error', 'wrap' => 'small')));?>
<?php //echo $fck->load('Contact.message','Mini'); ?>
<span>    
<?php
App::import('Vendor','FoxCaptcha', array('file' => 'Fox_captcha.php'));
       $cap = new Fox_captcha(120,30,5);

                       $cap->image_dir = $html->url('/').'img/';

      $cap->lines_amount = 13;
       $cap->en_reload = $html->image('reload.png', array('alt' => __('reload', true), 'title' => __('reload the captcha', true), 'id' => 'frel', 'style' => 'vertical-align:middle'));

?>
</span>
<div>    
<span class="display:inline"><?php echo $cap->make_it('HTML');?></span>
<?php echo $form->input('vcode', array('size' => 45, 'class' => 'small input-text', 'label' => array('text' => __('captcha', true).'<sup>*</sup>'), 'error' => array('class' => 'error', 'wrap' => 'small')));?>
</div>



<?php echo $form->submit(__('send',true), array('class' => 'nice medium radius white button'));?>

<?php echo $form->end();?>
<div class="alert-box warning"><?php echo __('fields label with * are required');?></div>
</div>

問題は次のとおりです。任意のページ(投稿/表示/ 22など)からこのフォームを使用すると、連絡先/追加に送信されます。投稿/ビュー/22の送信後に、検証メッセージがトリガーされてレンダリングされた後、欲しいです。

4

1 に答える 1

0

Ajax と JSON なしでは、この要件の解決策はありません。これには、Ajax を含むフォームを連絡先コントローラー インデックス アクションに送信し、イベント ハンドラー コンポーネントをアクティブにして、isAjax をチェックし、投稿のビューによって取得された JSON 出力をレンダリングして、結果を入力することが含まれます。

于 2012-08-19T15:59:26.500 に答える