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/

  • 相关阅读:
    K3s+Jetson Nano,在边缘端实现实时视频分析!
    15分钟连接Jetson Nano与K8S,轻松搭建机器学习集群
    配置高可用K3s集群完全攻略
    K3s+Sysdig,8分钟部署并保护集群安全!
    1款工具助力Rancher HA快速部署,极速提升研发测试效率
    连刷40道题,告别动态规划,谈谈我的经验
    直通BAT算法精讲视频教程分享
    关于三次握手和四次挥手,面试官想听到怎样的回答?
    Redisson 分布式锁实战与 watch dog 机制解读
    Spring 注解动态数据源设计实践
  • 原文地址:https://www.cnblogs.com/mingc/p/6752061.html
Copyright © 2011-2022 走看看