如果等于,则检查两个非数据库模型的输入
问题描述:
I want to compare two input in my model
class User extends CActiveRecord
{
public function tableName()
{
return '{{user}}';
}
public $newPassword;
public $repeatPassword;
how can i do this using rules() . . note that $newPassword and $repeatPassword is none database model
this is my view
<div class="row">
<?php echo $form->labelEx($model,'newPassword'); ?>
<?php echo $form->textField($model,'newPassword',array('size'=>60,'maxlength'=>128)); ?>
<?php echo $form->error($model,'newPassword'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'repeatPassword'); ?>
<?php echo $form->textField($model,'repeatPassword',array('size'=>60,'maxlength'=>128)); ?>
<?php echo $form->error($model,'repeatPassword'); ?>
</div>
我想比较模型中的两个输入 p>
class 用户扩展CActiveRecord
{
公共函数tableName()
{
返回'{{user}}';
}
public $ newPassword;
public $ repeatPassword;
code> pre>
如何使用rules()来完成此操作。 。 请注意$ newPassword和$ repeatPassword是无数据库模型 p>
这是我的视图 p>
&lt; div class =“row”&gt;
&lt;?php echo $ form-&gt; labelEx($ model,'newPassword'); ?&gt;
&lt;?php echo $ form-&gt; textField($ model,'newPassword',array('size'=&gt; 60,'maxlength'=&gt; 128)); ?&gt;
&lt;?php echo $ form-&gt;错误($ model,'newPassword'); ?&gt;
&lt; / div&gt;
&lt; div class =“row”&gt;
&lt;?php echo $ form-&gt; labelEx($ model,'repeatPassword'); ?&gt;
&lt;?php echo $ form-&gt; textField($ model,'repeatPassword',array('size'=&gt; 60,'maxlength'=&gt; 128)); ?&gt;
&lt;?php echo $ form-&gt;错误($ model,'repeatPassword'); ?&gt;
&lt; / div&gt;
code> pre>
div>
答
See validation from yii wiki
public function rules() {
return array(
array('newPassword', 'required'),
array('repeatPassword', 'required'),
array('newPassword', 'compare', 'compareAttribute'=>'repeatPassword'),
);
}
or you can write your own validation rule
public function rules() {
return array(
array('newPassword, repeatPassword', 'safe'),
array('newPassword', 'checkPassword'),
);
}
public function checkPassword($attribute,$params) {
// return if there was no password input
if (empty($this->newPassword) && empty($this->repeatPassword)) return;
// if password does not match repeat password add validation error
if ($this->newPassword != $this->repeatPassword)
$this->addError('newPassword','Password does not match the Repeat Password.');
}