• Zend framework 开发总结2


    今天完成了个人信息的更新及密码的修改。

    主要还是针对昨天看到的知识点做些总结

    1、关于认证Zend_Auth类的运用。

     1   //获取数据库适配器
     2     $db=Zend_Db_Table::getDefaultAdapter();
     3     //获取认证适配器
     4     $authAdapter=new Zend_Auth_Adapter_DbTable($db,'users','username','password');
     5   //为认证类适配器添加认证条件
     6     $authAdapter->setIdentity($data['username'])->setCredential(md5($data['password']));
     7 //关键点----认证
     8     $result=$authAdapter->authenticate();
     9     //判断认证结果
    10     if($result->isValid()){
    11         $auth=Zend_Auth::getInstance();
    12         //如果正确,则保存认证结果
    13         $storage=$auth->getStorage();
    14         //保存的项
    15         $storage->write($authAdapter->getResultRowObject(array(
    16                 'id','username','role')));

    保存的认证在后来的开发中起着非常重要的作用。由于Zen_auth是单例模式,所以在任何地方都可以直接用getinstance实例化。

    2、关于表单的使用

    用zf创建表单前期的添加表单项比较麻烦,但是后期的话比较方便。首先在controllers下添加form/User.php主要用于创建表单的类。

     1 <?
     2 class Form_User extends Zend_Form{
     3 //直接初始化创建
     4    public function init(){
     5 //首先设置数据提交方式
     6   $this->setMethod('post');
     7   //仅仅选取其中几个不同的举例
     8 //首先是用户名text类型
     9   $username=$this->createElement('text','username');
    10   $username->setLabel('用户名:');
    11   $username->setRequired(true);
    12   $username->addValidator('stringLength',false,array(5,10));
    13   $username->addErrorMessage('用户名5-10');
    14   $this->addElement($username);
    15 //然后是性别
    16   $sex=$this->createElement('radio','sex');
    17   $sex->setLabel('性别:');
    18   $sex->addMultiOptions(array(1=> '男',0 =>'女'));
    19   $sex->setSeparator("");
    20   $this->addElement($sex);
    21 //然后是密码
    22    $password=$this->createElement('password','password');
    23    $password->setLabel('密码:');
    24    $password->addValidator('stringLenght',false,array(6));
    25    $password->addErrorMessage('密码6位以上');
    26    $this->addElement($password);
    27 //然后是
    28 //确认密码
    29   $password2=$this->createElement('password','password2');
    30    $password2->setLabel('确认密码:');
    31    $password2->setRequired(TRUE);
    32    $password2->addValidator('identical',false,array('token' =>'password'));
    33    $password2->addErrorMessage('两次输入不一致ͬ');
    34    $this->addElement($password2);
    35 //
    36     //简介
    37     $profile=$this->createElement('textarea', 'profile');
    38     $profile->setLabel('个人简介:');
    39     $profile->setAttribs(array('rows'=>4,'cols'=>50));
    40     $this->addElement($profile);
    41     //头像
    42         $avatar=$this->createElement('file', 'avatar');
    43         $avatar->setLabel('头像:');
    44         $avatar->setRequired(false);
    45         $this->addElement($avatar);
    46         
    47     //用户状态
    48         $status=$this->createElement('select', 'status');
    49         $status->setLabel('用户状态:');
    50         $status->addMultiOptions(array(
    51                 '0'=>'锁定','1'=>'激活',
    52         ));
    53         $status->setRequired(true);
    54         $this->addElement($status);
    55     //角色
    56       $role=$this->createElement('select', 'role');
    57       $role->setLabel('用户角色');
    58       $role->addMultiOptions(array(
    59               'user'=>'用户',
    60             'edit'=>'编辑',
    61               'admin'=>'管理员'
    62       ));
    63 
    64 }
    65 
    66 }

    然后在后期,我们可以在控制器里引入并实例化,通过removeElement('')方法移除不需要的元素在处理提交数据的时候一定要注意验证数据isValid()方法.之后就可以通过getValue方法进行相关数据的操作

    3、关于Zend_Db_Table_Row的使用

    首先可以在表模型中添加相应的数据操作方法,这是非常好用的。可以在控制器实例化数据类的时候直接调用相应的方法。

    在表模型的方法中可以通过$this->createRow()来创建一列,这主要用于插入一条记录。对于修改一条记录,有多种方法,但我试成功的方法有以下几种

      a/ 对应该表的键值的数组$data可以用createRow($data)来创建。$newrow=$this->createRow($Data);//创建一个新行$newrow->save();

    访问可以用$newrow->id等方式直接访问。

    b/  $row->setFromArray($data)用户更新记录信息,$data依然是数组。可以是多个键值组,不一定要完全表。$row->save();

    这里做个笔记,关于zf里面zend_db_row的相关信息参考:http://framework.zend.com/manual/1.12/en/zend.db.table.row.html

    4、关于上传头像图片文件的zf操作。这里比较难,纠结了一个下午,好歹被做好了。

     1           //实例化传输适配器
     2           
     3           $adapter=new Zend_File_Transfer_Adapter_Http();
     4           //创建存储路径
     5           $path=APPLICATION_PATH.'/../public/uploads/'.date('Y-m').'/avatar/';
     6           //创建文件夹
     7           $folder=new Zend_Search_Lucene_Storage_Directory_Filesystem($path);
     8           //获取文件信息
     9           $fileInfo=$adapter->getFileInfo();
    10           //获取扩展名
    11           $extName=$this->_getExtension($fileInfo);
    12           //图片整名
    13          $fileName=time().'.'.$extName;
    14          
    15 //           //适配器校验
    16        $adapter->addFilter('Rename',array('target'=>$fileName,'overwrite'=>true));
    17 //           //设置目标路径
    18         $adapter->setDestination($path);
    19 //           //检验图片大小
    20         $adapter->addValidator('Size',FALSE,12800);
    21     
    22 //           //校验图片格式
    23         $adapter->addValidator('Extension',false,array('jpg','gif','png','jpeg'));
    24 //           //数据信息整理
    $adapter->receive()

    至此,今天的总结完毕。待以后复习使用。

  • 相关阅读:
    UltraSoft
    UltraSoft
    UltraSoft
    UltraSoft
    UltraSoft
    [技术博客] 使用邮箱验证并激活账户
    OO第一单元作业总结
    OO第一单元总结
    buaaoo_second_assignment
    buaaoo_first_improvement
  • 原文地址:https://www.cnblogs.com/phplover/p/2979952.html
Copyright © 2020-2023  润新知