5

やあ。

Yiiフレームワークでのフォーム検証に問題があります。

これが私のVIEWコードです:

    <?php
$form = $this->beginWidget('CActiveForm', array(
  'id' => 'search-form',
  'enableAjaxValidation' => true,
  'enableClientValidation' => true,
  'focus' => array($model, 'ccc'),
  'clientOptions' => array(
    'validateOnSubmit' => true,
  ),
    ));
?>

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

<div class="row">
  <?php echo $form->labelEx($model, 'input'); ?>
  <?php echo $form->textField($model, 'input', array('class' => 'input-medium', 'maxlength' => 11,)); ?>
  <?php echo $form->error($model, 'input'); ?>
</div>

<div class="row">
  <?php echo $form->labelEx($model, 'date'); ?>
  <?php
  $this->widget('zii.widgets.jui.CJuiDatePicker', array(
    'attribute' => 'date',
    'name' => 'date',
    'model' => $model,
    'language' => 'ru',
    'options' => array(
      'dateFormat' => 'dd/mm/y',
      'showAnim' => 'slideDown',
      'changeMonth' => true,
      'changeYear' => true,
      'showOn' => 'button',
      'constrainInput' => 'true',
    ),
    'htmlOptions' => array(
      'style' => 'height:15px; width:6em'
    ),
  ));
  ?>
  <?php echo $form->error($model, 'date'); ?>
</div>
<?php $this->endWidget(); ?>

特別なことは何もありません。ただし、検証メッセージはtextFieldに対してのみ機能します(AjaxリクエストはonChange textFieldでのみ送信されます)。

CJuiDatePicker検証メッセージを有効にする方法は?

4

4 に答える 4

3

CJuidatepickerオブジェクトに正しいIDを指定CHtml::getIdByNameし、ID値を作成するために使用し、そこにあるhtml要素の名前を試してください。次のようなものである必要があります。

'id' => CHtml::getIdByName(get_class($model) . '[' . $attribute . ']')

次のようになります。

  $this->widget('zii.widgets.jui.CJuiDatePicker', array(
    'id' => CHtml::getIdByName(get_class($model) . '[date]'),
    'attribute' => 'date',
    'name' => 'date',
    'model' => $model,
    'language' => 'ru',
    'options' => array(
       'dateFormat' => 'dd/mm/y',
       'showAnim' => 'slideDown',
       'changeMonth' => true,
       'changeYear' => true,
       'showOn' => 'button',
       'constrainInput' => 'true',
    ),
    'htmlOptions' => array(
      'style' => 'height:15px; width:6em'
    ),
  ));
于 2012-10-13T11:44:57.900 に答える
1

「値を含める必要があります」というウォンデの答えは私にはうまくいきませんでした...

これがうまくいったことです:

YiiCActiveFormの日付検証

views / site / login.phpには元々次のものがありました:

$form=$this->beginWidget('CActiveForm', array(
'id'=>'login-form',
'enableClientValidation'=>true,
'clientOptions'=>array(
    'validateOnSubmit'=>true,
),

これが次のように変更されたとき、物事は機能しました:

$form=$this->beginWidget('CActiveForm', array(
'id'=>'login-form',
'enableAjaxValidation' => true,
'clientOptions' => array(
        'validateOnSubmit' => true,
        'validateOnChange' => true,
),

参照: http ://sky-walker.net/temp/test/yii/testdate/index.php?r = site / login

于 2013-01-18T01:52:15.700 に答える
0

これは私がしたことであり、それは機能します、私はあなたが含めるべきだと思いますvalue

<?php echo $form->labelEx($model,'reportDate'); ?>
<?php $this->widget('zii.widgets.jui.CJuiDatePicker', 
    array( 'model'=>$model,
    'attribute'=>'reportDate',
    **'value'=>$model->reportDate,**
     'options'=>array(
     'showButtonPanel'=>true,
     'changeYear'=>true,
     'changeMonth'=>true,
      'autoSize'=>true,
     'dateFormat'=>'yy-mm-dd',
     'defaultDate'=>$model->reportDate,
     ),
    ));
    ?>
<?php echo $form->error($model,'reportDate'); ?>
于 2013-01-17T18:41:50.233 に答える
0

この問題は 、 CJuiDatePicker$form->error($model,'end_date')の後に追加するだけで解決できます。

$this->widget('zii.widgets.jui.CJuiDatePicker', array(
    'id' => CHtml::getIdByName(get_class($model) . '[date]'),
    'attribute' => 'date',
    'name' => 'date',
    'model' => $model,
    'language' => 'ru',
    'options' => array(
       'dateFormat' => 'dd/mm/y',
       'showAnim' => 'slideDown',
       'changeMonth' => true,
       'changeYear' => true,
       'showOn' => 'button',
       'constrainInput' => 'true',
    ),
    'htmlOptions' => array(
      'style' => 'height:15px; width:6em'
    ),
  ));
 echo $form->error($model,'dateTo');// added to enaple clint validation
于 2014-11-06T10:30:20.143 に答える