我怎样才能在yii 1

时间:2016-03-15 11:24:24

标签: php forms yii

我正在尝试验证我的表单但没有任何模型。我成功完成了这项工作并且完成了70%。但我被困在一个地方,所以我需要一个小帮助。为此,我创建了一个客户类。

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);
}

validConfiguration是一项涵盖规则的功能

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>

问题

代码适用于单个元素I adminEmail defaultpage但不适用于guestuser[email] guestuser[password]这样的代码。

0 个答案:

没有答案