Home  >  Article  >  Backend Development  >  Yii framework form model and validation usage, yii framework form model_PHP tutorial

Yii framework form model and validation usage, yii framework form model_PHP tutorial

WBOY
WBOYOriginal
2016-07-12 08:50:30845browse

Yii framework form model and verification usage, yii framework form model

This article describes the Yii framework form model and verification usage with examples. Share it with everyone for your reference, the details are as follows:

Most of the form model CFormModel inherits CModelCModel. Since the table model data does not need to be persisted, it is mainly used for verification operations. The following uses the website login generated by the framework scaffolding as an example to illustrate the form model.

//模型中的验证规则
public function rules()
{
  return array(
    array('username, password', 'required'),
    array('rememberMe', 'boolean'),
    array('password', 'authenticate'),
  );
}

$model=new LoginForm;//创建一个登录表单模型
$model->attributes=$_POST['LoginForm'];//传入登录数据
CModel->setAttributes($values,$safeOnly=true)//调用CModel的setter方法
//返回model中relues中定义的安全数据,经过下面的调用流程获取一个验证器集合
//每个验证器由CValidator::createValidator($rule[1],$this,$rule[0],array_slice($rule,2))
CModel->getValidators()
->createValidators()
->rules()
CModel->validate();//遍历验证器执行验证

Verifier internal implementation

The core part of the form model is verification, and its implementation will be discussed below.

Validation in the YII framework exists in the form of a collection of independent components, and CValidator is the base class of all validators. Let’s take login verification as an example. The rules method contains three validators: required, boolean, and authenticate

public static function createValidator($name,$object,$attributes,$params=array())
{
  if(is_string($attributes))
    $attributes=preg_split('/[\s,]+/',$attributes,-1,PREG_SPLIT_NO_EMPTY);
  if(isset($params['on']))
  {
    if(is_array($params['on']))
      $on=$params['on'];
    else
      $on=preg_split('/[\s,]+/',$params['on'],-1,PREG_SPLIT_NO_EMPTY);
  }
  else
    $on=array();
  if(method_exists($object,$name))
  {
    $validator=new CInlineValidator;
    $validator->attributes=$attributes;
    $validator->method=$name;
    if(isset($params['clientValidate']))
    {
      $validator->clientValidate=$params['clientValidate'];
      unset($params['clientValidate']);
    }
    $validator->params=$params;
    if(isset($params['skipOnError']))
      $validator->skipOnError=$params['skipOnError'];
  }
  else
  {
    $params['attributes']=$attributes;
    if(isset(self::$builtInValidators[$name]))
      $className=Yii::import(self::$builtInValidators[$name],true);
    else
      $className=Yii::import($name,true);
    $validator=new $className;
    foreach($params as $name=>$value)
      $validator->$name=$value;
  }
  $validator->on=empty($on) ? array() : array_combine($on,$on);
  return $validator;
}

Create validator process

1. Get attributes (array $attributes) and usage scenarios (array $on)
2. Determine whether the validator exists in the model. If it exists, create an inline validator CInlineValidator. If it does not exist, perform step 3
3. If the validator is the one that comes with the framework, import the built-in validator. Otherwise, import the external validator, then instantiate and assign a value.

When validate() is triggered, possible errors will be stored in the model. These error information can be extracted by calling CModel::getErrors() and CModel::getError()

PS:The editor here recommends a PHP formatting and beautifying typesetting tool on this website to help you code typesetting in future PHP programming:

PHP code online formatting and beautification tool: http://tools.jb51.net/code/phpformat

Readers who are interested in more Yii-related content can check out the special topics on this site: "Introduction to Yii Framework and Summary of Common Techniques", "Summary of Excellent PHP Development Framework", "Basic Tutorial for Getting Started with Smarty Templates", "php Date and Time" Usage Summary", "php object-oriented programming introductory tutorial", "php string (string) usage summary", "php mysql database operation introductory tutorial" and "php common database operation skills summary"

I hope this article will be helpful to everyone’s PHP program design based on the Yii framework.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/1133127.htmlTechArticleYii framework form model and verification usage, yii framework form model This article describes the Yii framework form model and verification usage with examples. Share it with everyone for your reference, the details are as follows: Form model...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn