蛋糕PHP 通过验证制作一个全局表单


CakePHP Making a form to be global with validation

我的应用程序具有带有添加操作的联系人控制器,该操作能够将联系人消息发布到数据库表注释中。它的验证工作正常。现在,我想使用添加视图(联系人窗体)作为要在应用程序的所有页面中呈现的全局窗体。

我知道,要做到这一点,我必须使一个元素包含表单(或添加视图),如下所示:

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 后呈现并触发任何验证消息。

没有 Ajax 和 JSON 就没有解决此要求的解决方案。它包括使用 Ajax 将表单提交到激活事件处理程序组件的联系人控制器索引操作,然后检查 isAjax,然后呈现帖子视图检索到的 JSON 输出,然后填充结果。