当我在场景'创建'中创建Yii中的新帖子时,我有两个字段'简短描述'和'长描述',所以当我点击第一个保存时我有一个消息错误'简短说明不能为空。 “并且发布不保存,如果我点击第二,那么发布是保存。 我怎么解决它?
P.S。当我从规则发布中删除此字段时,首先单击保存。
array('title, price, short_description, long_description, store, in_stock', 'required', 'on'=>'general, create'),
谢谢!
这是因为我使用了textarea的一些扩展
'short_description'=>array(
'type'=>'textarea',
'cols'=>50,
'rows'=>10,
),
'long_description'=>array(
'type'=>'textarea',
'cols'=>50,
'rows'=>14,
),
当我将textarea替换为文本字段时,一切正常。
但我需要修理它,有人想过吗?
public function rules()
{
return array(
array('title, price, short_description, long_description, store, in_stock', 'required', 'on'=>'general, create'),
array('short_description', 'length', 'encoding' => 'UTF-8', 'max'=>256),
array('product_number, weight', 'safe', 'on'=>'general, create'),
array('price, in_stock', 'numerical', 'on'=>'general, create'),
array('price', 'numerical', 'integerOnly' => FALSE, 'min' => '0', 'on'=>'general, create'),
array('in_stock', 'numerical', 'integerOnly' => FALSE, 'min' => '0', 'on'=>'general, create'),
array('store','trialCreate','on'=>'create'),
array('status', 'safe', 'on'=>'create'),
array('meta_description, meta_keywords', 'safe', 'on'=>'meta'),
array('currentImage', 'safe', 'on'=>'image'),
array('newImage', 'file', 'allowEmpty'=>false, 'safe'=>true, 'types'=>'png, jpg, jpeg, gif', 'on'=>'image'),
array('categoryIDs', 'validateCategories', 'on'=>'categories'),
array('status', 'required', 'on'=>'status'),
array('store', 'safe', 'on'=>'search'),
);
}
把控制器放在一边不容易,因为我使用的是
所以,我用这种方式对我来说。我从所需规则中删除字段并创建自己的规则。
array('short_description, long_description', 'validateDescription', 'on'=>'general, create'),
/**
*
*/
public function validateDescription()
{
if($this->long_description=="")
{
$this->addError('long_description', 'Long Description cannot be blank.');
}
if($this->short_description=="")
{
$this->addError('short_description', 'Short Description cannot be blank.');
}
}
现在我需要在客户端创建验证。 谢谢大家的关注!
答案 0 :(得分:0)
而且,如果你总是使用这个限制? (在所有情况下)
array('title, price, short_description, long_description, store, in_stock', 'required'),
<强>编辑:强>
请问您的型号/控制器代码吗?
<强>编辑:强>
尝试 CActiveForm 小部件:
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'myModel-form',
'enableAjaxValidation'=>false,
)); ?>
<?php echo $form->errorSummary($model); ?>
<div class="row">
<?php echo $form->labelEx($model,'short_description'); ?>
<?php echo $form->textArea($model,'short_description',array('maxlength'=>255, 'cols'=>50, 'rows'=>10)); ?>
<?php echo $form->error($model,'short_description'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'long_description'); ?>
<?php echo $form->textArea($model,'long_description',array('maxlength'=>255, 'cols'=>50, 'rows'=>14)); ?>
<?php echo $form->error($model,'long_description'); ?>
</div>
<div>
<?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save', array('class'=>'btn')); ?>
</div>
<?php $this->endWidget(); ?>