Вход Регистрация
Файл: framework/gii/generators/form/FormCode.php
Строк: 70
<?php

class FormCode extends CCodeModel
{
    public 
$model;
    public 
$viewPath='application.views';
    public 
$viewName;
    public 
$scenario;

    private 
$_modelClass;

    public function 
rules()
    {
        return 
array_merge(parent::rules(), array(
            array(
'model, viewName, scenario''filter''filter'=>'trim'),
            array(
'model, viewName, viewPath''required'),
            array(
'model, viewPath''match''pattern'=>'/^w+[.w+]*$/''message'=>'{attribute} should only contain word characters and dots.'),
            array(
'viewName''match''pattern'=>'/^w+[\/w+]*$/''message'=>'{attribute} should only contain word characters and slashes.'),
            array(
'model''validateModel'),
            array(
'viewPath''validateViewPath'),
            array(
'scenario''match''pattern'=>'/^w+$/''message'=>'{attribute} should only contain word characters.'),
            array(
'viewPath''sticky'),
        ));
    }

    public function 
attributeLabels()
    {
        return 
array_merge(parent::attributeLabels(), array(
            
'model'=>'Model Class',
            
'viewName'=>'View Name',
            
'viewPath'=>'View Path',
            
'scenario'=>'Scenario',
        ));
    }

    public function 
requiredTemplates()
    {
        return array(
            
'form.php',
            
'action.php',
        );
    }

    public function 
successMessage()
    {
        
$output=<<<EOD
<p>The form has been generated successfully.</p>
<p>You may add the following code in an appropriate controller class to invoke the view:</p>
EOD;
        
$code="<?phpn".$this->render($this->templatePath.'/action.php');
        return 
$output.highlight_string($code,true);
    }

    public function 
validateModel($attribute,$params)
    {
        if(
$this->hasErrors('model'))
            return;
        
$class=@Yii::import($this->model,true);
        if(!
is_string($class) || !$this->classExists($class))
            
$this->addError('model'"Class '{$this->model}' does not exist or has syntax error.");
        elseif(!
is_subclass_of($class,'CModel'))
            
$this->addError('model'"'{$this->model}' must extend from CModel.");
        else
            
$this->_modelClass=$class;
    }

    public function 
validateViewPath($attribute,$params)
    {
        if(
$this->hasErrors('viewPath'))
            return;
        if(
Yii::getPathOfAlias($this->viewPath)===false)
            
$this->addError('viewPath','View Path must be a valid path alias.');
    }

    public function 
prepare()
    {
        
$templatePath=$this->templatePath;
        
$this->files[]=new CCodeFile(
            
Yii::getPathOfAlias($this->viewPath).'/'.$this->viewName.'.php',
            
$this->render($templatePath.'/form.php')
        );
    }

    public function 
getModelClass()
    {
        return 
$this->_modelClass;
    }

    public function 
getModelAttributes()
    {
        
$model=new $this->_modelClass($this->scenario);
        return 
$model->getSafeAttributeNames();
    }
}
Онлайн: 1
Реклама