Php 如何在yii 1中的表单之外验证我的表单
我正在尝试验证我的表单,但没有任何模型。我成功地做到了这一点,并且完成了70%。但是我被困在一个地方,所以我需要一点帮助。为此,我创建了一个custome类Php 如何在yii 1中的表单之外验证我的表单,php,forms,yii,Php,Forms,Yii,我正在尝试验证我的表单,但没有任何模型。我成功地做到了这一点,并且完成了70%。但是我被困在一个地方,所以我需要一点帮助。为此,我创建了一个custome类 class MyValidator extends CFormModel { public function __get($name) { return isset($_POST[$name])?$_POST[$name]:null; } static function myValidate( Ar
class MyValidator extends CFormModel {
public function __get($name) {
return isset($_POST[$name])?$_POST[$name]:null;
}
static function myValidate( Array $rules ) {
$dummy = new MyValidator();
foreach($rules as $rule) {
if( isset($rule[0],$rule[1]) ) {
$validator = CValidator::createValidator(
$rule[1],
$dummy,
$rule[0],
array_slice($rule,2)
);
$validator->validate($dummy);
}
else { /* throw error; */ }
}
return $dummy;
}
}
现在我在控制器中使用这个类,就像
$model=MyValidator::myValidate($this->validConfiguration());
if(!$model->hasErrors())
{
file_put_contents($config,$newconfig);
$this->refresh();
}else
{
$this->errors=$model->getErrors();
print_r($this->errors);
$data=(array) json_decode($newconfig);
}
有效配置
是一个包含规则的函数
public function validConfiguration()
{
return array(
array('guestuser[email], adminEmail, dateformat', 'required'),
array('adminEmail, guestuser[email]', 'email'),
);
}
我的表单字段如下
<div>
<?php echo CHtml::textField('adminEmail',isset($data['adminEmail']) ? $data['adminEmail']: '',array('class'=>'form-control')); ?>
<div class="errorMessage"><?php echo $this->displayerror('adminEmail'); ?></div>
</div>
<div>
<?php echo CHtml::textField('guestuser[email]',isset($data['guestuser']->email) ? $data['guestuser']->email: '',array('class'=>'form-control')); ?>
<div class="errorMessage"><?php echo $this->displayerror('guestuser[email]'); ?></div>
</div>
问题
该代码适用于单个元素,即
adminEmail
defaultpage
,但不适用于guestuser[email]
guestuser[password]
,如下所示 您遗漏了“array('guestuser[email]、adminEmail、dateformat、'required')、@SardorDushamov,这在示例中是一个键入错误。