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/

  • 相关阅读:
    bzoj2669 [cqoi2012]局部极小值 状压DP+容斥
    bzoj2560 串珠子 状压DP
    bzoj2004 [Hnoi2010]Bus 公交线路 矩阵快速幂+状压DP
    「校内训练 2019-04-23」越野赛车问题 动态dp+树的直径
    bzoj5210 最大连通子块和 动态 DP + 堆
    动态 DP 学习笔记
    bzoj4987 Tree 树上背包
    bzoj1190 [HNOI2007]梦幻岛宝珠 背包
    bzoj1004 [HNOI2008]Cards Burnside 引理+背包
    bzoj4922 [Lydsy1706月赛]Karp-de-Chant Number 贪心+背包
  • 原文地址:https://www.cnblogs.com/mingc/p/6752061.html
Copyright © 2011-2022 走看看