Zend framework 开发总结2

摘要:
主要是总结我们昨天看到的知识点。1.关于认证Zend_Auth类的使用。1//获取数据库适配器2$db=Zend_db_表::getDefaultAdapter();3//获取认证适配器4$authAdapter=newZend_Auth_adapter_DbTable;5//为认证类型适配器添加认证条件6$authAdapter-˃setIdentity-˃setCredential;7//关键点----身份验证8$result=$authAdapter-˃authenticate();9//判断身份验证结果10if{11$auth=Zend_auth::getInstance();12//如果正确,请保存身份验证结果13$storage=$auth-˃getStorage() ; 14//已保存项目15$存储-˃写入;保留身份验证在后续开发中扮演着非常重要的角色。因为Zen_Auth是一种单例模式,所以您可以在任何地方使用getinstance直接实例化它。首先,在controllers下添加form/User.php,它主要用于创建一个表单类$newrow=$this-˃createRow;//创建新行$newrow-˃save();可以使用$ne进行访问

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

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

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()

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

免责声明:文章转载自《Zend framework 开发总结2》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇android--------根据文件路径使用File类获取文件相关信息Flash务实主义(五)——AS3的垃圾回收下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

安装pywin32模块

“)if__name__==”__main__“:RegisterPy()在保存后输入cmd,切换到存储py文件的目录,执行pythonregisted.py,然后重新运行exe文件以安装pywin32。...

【转载】SecureCRT配色推荐和永久设置

2.配置文件夹和其他颜色选项==“全局选项==”终端==“外观==”ANSI颜色单击第二行中的第五个色块以修改文件夹颜色:对第二个色块执行相同的操作以修改压缩包和jar包的颜色:如果设置后文件夹和其他的颜色无效,您可以对第二行中设置背景色和字体颜色的颜色块执行相同的操作!...

git使用说明

初次使用请参考百度,google,博客园。1修改文件并提交到github[luwenwei@dev01v~/git/helww/labs]$vimREADME[luwenwei@dev01v~/git/helww/labs]$gitdiffdiff--gita/READMEb/READMEindex39d8172..464c83f100644---a/REA...

MySQL学习笔记:字符串前后补全0

遇到一个要求:如果位数小于6,则需要使用函数LPAD()和RPAD()自动完成6位。LPAD使用字符串padstr填充并完成左侧的str,直到其长度达到len个字符,并返回str。...

vue+jspdf+html2canvas导出PDF文件

没有废话。首先,查看最终打印结果。我说最后打印的pdf文件看起来像这样。pdf文件的分页是通过设置jspdf实现的,但我暂时无法对文件内容进行分页。因为我们首先将需要打印的元素转换为画布,然后将画布转换为图像,然后将图像转换为pdf文件。...

Fiddler抓包7-post请求(json)(转载)

2.查看上图中的红色框:这里只支持application/x-www-form-urlencoded格式的body参数,即json格式。您需要检查JOSN列中的five和xml。1.如果遇到text/xml格式的正文,如下图所示...