zoukankan      html  css  js  c++  java
  • Yii 1.1.17 四、属性标签、AR类增删改查、使用上传类与扩展第三方类库

    一、属性标签与规则设置

    当进入网站页面,将会读数据库返回信息到视图上。那么,现在定义模型中的属性在视图标签上的显示,

    也就是模型属性到前台标签的映射

    // 定义模型属性到前台标签的映射
    public function attributeLabels(){
      return array(
         // '表字段' => '<label>标签里面的内容' 
        'username' => '用户名'
      );
    }

    这将为 username 属性生成一个 <label>用户名</label> 的提示标签。

    表单验证规则:

    同样,与登录时验证规则都在模型的 rules() 方法里定义

    public function rules(){
      return array(  
        array('uname', 'required', 'message' => '用户名不能为空'),
        array('pwd', 'required', 'message' => '密码不能为空'),
        array('pwd', 'authenticate'),         // 自定义 authenticate验证规则
        array('pwded', 'compare', 'compareAttribute' => 'pwd', 'message' => '两次密码不一致'),
        array('captcha', 'required', 'message' => '验证码不能为空'),
        array('captcha', 'captcha', 'message' => '验证码有误')
      );
    }
    

    更多规则,参考 http://blog.csdn.net/zm2714/article/details/8683329 

    二、启用客户端验证

    首先,控制器中渲染视图用$this->render('视图名');方法

    然后,视图上

    <?php
      $form = $this->beginWidget('CActiveForm', array(
        'id' = 'post-form',
        'enableClientValidation' => true, //启用客户端验证
        'clientOptions' => array(
          'validateOnSubmit' => true,  //表单提交时验证
        )
      ));
    ?>

    三、操作成功提示

    在控制器方法中,

    Yii::app()->user->setFlash('success', 'XX操作成功');  // success是标识符

    在视图中,

    if(Yii::app()->user->hasFlash('success')){
      echo Yii::app()->user->getFlash('success');
    }

      

    四、激活调试模式

    在main.php里面,取消下面被注释的部分

    'log' => array(
      'class'=>'CLogRouter',
      'routes'=>array(
        array(
          'class'=>'CFileLogRoute',
          'levels'=>'error, warning',
        ),
    
        /*
        array(
          'class'=>'CWebLogRoute',
    
        */
      ),
    ),

    五、AR类增删改查

    1、只有“增”的时候,需要new模型,其他时候直接静态调用。

    $model = new Model();
    $model->attributes = $_POST['form'];
    $model->save();

    save()方法在new Model的时候是增加,在$model::model()的时候是修改

    2、查记录:

    单条查询:

    find('username = :name', array(':name' => 'admin'));  //单条查询特定username为admin的记录
    findByPk(1); // 单条查询主键为1的记录
    findBySql('select id, username, logintime, loginip, from {{admin}}'); //单条SQL查询

    多条查询:

    findAll();
    
    findAllByPk();
    
    findAllBySql();
    

    3、改记录

    和增记录同样操作,$model::model()->attributes = $_POST['form']->save();

    4、删记录

    $model::model()->deleteByPk(1); //删除主键为1的数据

    更多AR类的方法参考 framework/db/ar/CActiveRecord.php 源码

    六、上传类的使用

    $model = new model();
    $model->thumb = CUploadedFile::getInstance($model, 'thumg');
    if($model->thumb){
      $name = time() . mt(0, 999) .$model-thumb->extensionName(); //保存文件名
      $model->thumb->saveAs('上传路径', $name);
    }

    七、扩展第三方类库

    1、在protected/extensions中建立thumb/thumb.php;

    2、在main.php中配置

    'components' => array(
      'thumb' => array(
        'class' => 'ext.thumb.thumb'
      )
    ),

    3、在控制器方法中调用

    $thumb = Yii::app()->thumb;

    ext 是扩展目录 protected/extensions/

  • 相关阅读:
    Study Plan The TwentySecond Day
    Study Plan The Nineteenth Day
    Study Plan The TwentySeventh Day
    Study Plan The Twentieth Day
    Study Plan The TwentyFirst Day
    python实现进程的三种方式及其区别
    yum makecache
    JSONPath 表达式的使用
    oracle执行cmd的实现方法
    php daodb插入、更新与删除数据
  • 原文地址:https://www.cnblogs.com/mingc/p/6752061.html
Copyright © 2011-2022 走看看