Php 在Yii引导窗体中显示所有窗体错误

Php 在Yii引导窗体中显示所有窗体错误,php,twitter-bootstrap,yii,frameworks,yii-extensions,Php,Twitter Bootstrap,Yii,Frameworks,Yii Extensions,我有一个使用Yii引导库的Yii表单,在提交表单时,如果任何字段中存在错误,则该字段将突出显示,并且相应输入文本字段下方的红色文本将显示单个错误 我也希望在表单上方的页面顶部显示所有错误,我的代码如下所示: 我想把错误一个接一个地列在表格的顶部,有什么好办法可以做到这一点吗 <?php if (!$model->isNewrecord) $this->renderPartial('partials/_totals', compact('model'));?> <?

我有一个使用Yii引导库的Yii表单,在提交表单时,如果任何字段中存在错误,则该字段将突出显示,并且相应输入文本字段下方的红色文本将显示单个错误

我也希望在表单上方的页面顶部显示所有错误,我的代码如下所示:

我想把错误一个接一个地列在表格的顶部,有什么好办法可以做到这一点吗

<?php if (!$model->isNewrecord) $this->renderPartial('partials/_totals', compact('model'));?>

<?php $form = $this->beginWidget('application.widgets.bootstrap.TbActiveFormExt', array(
'id'                    => get_class($model),
'type'                  => 'horizontal',
'enableAjaxValidation'  => true,
'clientOptions'             => array(
    'validateOnSubmit'      => true,
    'validateOnChange'      => false,
    'validateOnType'        =>false,
),
'htmlOptions'           => array(
    'class'                 => '',
    'autocomplete'          => 'off'
),
)); ?>
<?php echo $form->hiddenField($model, 'activetab' ); ?>

<?php $this->beginWidget('CClipWidget', array('id'=>'t1')); ?>
    <div class="row-fluid">
        <div class="inner">
            <fieldset class="span12">
                <legend>User Details</legend>
                <div class="row-fluid">
                    <div class="span6">
                        <?php echo $form->textFieldRow($model, 'username', array('class'=>'span12')); ?>
                        <?php if ($model->isNewRecord):?>
                            <?php echo $form->passwordFieldRow($model, 'password', array('value'=>'','class'=>'span12')); ?>
                            <?php echo $form->passwordFieldRow($model, 'password_repeat', array('value'=>'', 'class'=>'span12', 'hint' => '<i class="icon-info-sign"></i> If you leave the password fields empty we will default it to \'mystickers\'.')); ?>
                        <?php else:?>
                            <?php echo $form->passwordFieldRow($model, 'new_password', array('value'=>'', 'class'=>'span12')); ?>
                            <?php echo $form->passwordFieldRow($model, 'new_password_repeat', array('value'=>'', 'class'=>'span12', 'hint' => '<i class="icon-info-sign"></i> Enter a new password only if you wish to change the current one.')); ?>
                        <?php endif; ?>
                        <?php echo $form->textFieldRow($model, 'firstname', array('class'=>'span8')); ?>
                        <?php echo $form->textFieldRow($model, 'surname', array('class'=>'span8')); ?>

                        </div>
                        <div class="span6">
                            <?php if ($model->isNewRecord):?>
                            <?php echo $form->dropDownListRow($model, 'gender', $model->genderOptions, array( 'empty' => '-- Select --', 'class'=>'span12')); ?>
                        <?php else: ?>
                            <?php echo $form->dropDownListRow($model, 'gender', $model->genderOptions, array('class'=>'span12')); ?>
                        <?php endif; ?>
                        <?php echo $form->textFieldRow($model, 'year_id', array('class'=>'span2')); ?>
                        <?php echo $form->textFieldRow($model, 'form_name', array('class'=>'span12')); ?>
                        <?php echo $form->textFieldRow($model, 'House', array('class'=>'span12')); ?>
                        <?php if ($model->isNewRecord): ?>
                            <?php if (user()->hasAuth(Group::GROUP_ADMIN, 'equal') && !user()->data->organisation->hasViewOrg): ?>
                                <?php echo $form->dropDownListRow($model, 'organisation_id', CHtml::listData($model->organisations, 'organisation_id', 'organisation_name'), array('prompt' => '-- Select --', 'class'=>'span9', 'value' => user()->getState('view_org'))); ?>
                            <?php endif; ?>
                        <?php endif; ?>
                    </div>
                </div>
            </fieldset>
        </div>
    </div>
<?php $this->endWidget(); ?>

<?php $this->beginWidget('CClipWidget', array('id'=>'t2')); ?>
    <div class="row-fluid">
        <div class="inner">
            <fieldset class="span12">
                <legend>Unique Label Information</legend>
                <div class="row-fluid">
                    <div class="span6">
                        <?php echo $form->textFieldRow($model, 'Unique1', array('class'=>'span12')); ?>
                        <?php echo $form->textFieldRow($model, 'Unique2', array('class'=>'span12') ); ?>
                        <?php echo $form->textFieldRow($model, 'Unique3', array('class'=>'span12') ); ?>
                        <?php echo $form->textFieldRow($model, 'Unique4', array('class'=>'span12') ); ?>
                        <?php echo $form->textFieldRow($model, 'Unique5', array('class'=>'span12')); ?>
                        <?php echo $form->textFieldRow($model, 'Unique6', array('class'=>'span12') ); ?>
                        <?php echo $form->textFieldRow($model, 'Unique7', array('hint' => '<i class="icon-info-sign"></i> You can change these unique label titles on your settings page.', 'class'=>'span12') ); ?>
                    </div>
                </div>
            </fieldset>
        </div>
    </div>
<?php $this->endWidget(); ?>

<?php $this->widget('bootstrap.widgets.TbTabs', array(
        'type'          => 'tabs',
        'placement'     => 'left',
        'htmlOptions'   => array(
            'class'         => 'clearfix',
        ),
        'events'    => array(
            'click' => 'js:function(e){$("#StudentDetailsForm_activetab").val(e.target.hash.substring(1))}'
        ),
        'tabs'          => array(
            array(
                'label'     => 'Main',
                'content'   => $this->clips['t1'],
                'active'    => !isset($activeTab) || $activeTab == 'yw0_tab_1',
            ),
            array(
                'label'     => 'Unique Label Information',
                'content'   => $this->clips['t2'],
                'active'    => isset($activeTab) && $activeTab == 'yw0_tab_2',
            )
        )
    )); ?>

    <div class="form-actions">
        <?php $this->widget('bootstrap.widgets.TbButton', array(
            'buttonType'    => 'submit',
            'type'          => 'success',
            'icon'          => 'ok white',
            'label'         => 'Save Settings',
            'htmlOptions'   => array(
                'class'         => 'pull-right'
            )
        )); ?>

        <?php $this->widget('bootstrap.widgets.TbButton', array(
            'buttonType'    => 'reset',
            'icon'          => 'remove',
            'label'         => 'Reset',
            'htmlOptions'   => array(
                'class'         => 'pull-right',
                'style'         => 'margin:0 10px;'
            )
        )); ?>
        <?php $this->widget('bootstrap.widgets.TbButton', array(
            'icon'          => 'arrow-left',
            'label'         => 'Cancel',
            'url'           => $overview ? '/site/overview/'.$overview : '/site/myuser/index',
            'htmlOptions'   => array(
                'style'         => 'margin:0 10px;'
            )
        )); ?>
    </div>
<?php $this->endWidget(); ?>

用户详细信息
你可以试试

 <?php echo $form->errorSummary($model); ?>


就在启动表单小部件之后。

在我将“enableAjaxValidation”设置设置为false后,它就开始工作了