今天开始了自己的zf的开发之旅。
今天碰到了不少问题,也仅仅完成了用户注册和登陆功能。还好都解决了。
1、首先在数据库配置方面,在application/configs/appcation.ini下配置数据库
[mysql] db.Adapter=MYSQL_PDO db.params.username=root db.params.password=root db.params.dbname=seeclass
然后在需要调用的地方,我是在BaseController.php里面init调用的(用到数据库的控制器类的父类)。
1 public function init() 2 { 3 /* Initialize action controller here 4 * 初始化数据库适配器 5 * */ 6 $url=constant("APPLICATION_PATH").DIRECTORY_SEPARATOR.'configs'.DIRECTORY_SEPARATOR.'application.ini'; 7 $dbconfig=new Zend_Config_Ini($url,"mysql"); 8 $db=Zend_Db::factory($dbconfig->db); 9 $db->query('SET NAMES UTF8'); 10 Zend_Db_Table::setDefaultAdapter($db); 11 12
之后如果有用到数据库的控制器的地方,就可以直接调用BaseController.php的BaseController
2、今天主要开发了UserController.php和User数据模型
User.php
<?php class UserModel extends Zend_Db_Table_Abstract{ protected $_name="users"; // //创建用户 public function createUser($userData){ if(count($userData)>0){ unset($userData['password2']); $userData['password']=md5($userData['password']); $userData['role']='user'; $userData['status']=1; $userData['time_reg']=date('Y-m-d H:i:s'); $userData['time_last']=date('Y-m-d H:i:s'); // print_r($userData); $newrow=$this->createRow($userData);//创建一个新行 $newrow->save(); // $newrow->save(); return $newrow->id; }else { return false; } } public function loginTime($id){ $row=$this->find($id)->current(); $row->time_last=date('Y-m-d H:i:s'); $row->save(); } }
UserController.php
<?php require_once 'BaseController.php'; require_once 'forms/User.php'; require_once APPLICATION_PATH.'/models/User.php'; class UserController extends BaseController{ public function registerAction(){ $formRegister=new Form_user(); $formRegister->removeElement('avatar'); $formRegister->removeElement('status'); $formRegister->removeElement('role'); $formRegister->removeElement('profile'); $this->view->formRegister=$formRegister; if($this->getRequest()->isPost()){ if ($formRegister->isValid($_POST)){ $userData=$formRegister->getValues(); $userModel=new UserModel(); $id=$userModel->createUser($userData); echo $id; }else{ exit('不合法') ; } } } public function loginAction(){ $formLogin=new Form_user(); $formLogin->removeElement('sex'); $formLogin->removeElement('email'); $formLogin->removeElement('avatar'); $formLogin->removeElement('password2'); $formLogin->removeElement('status'); $formLogin->removeElement('profile'); $formLogin->removeElement('role'); $this->view->formLogin=$formLogin; if(!!$this->getRequest()->isPost()){ if($formLogin->isValid($_POST)){ $data=$formLogin->getValues(); $db=Zend_Db_Table::getDefaultAdapter(); $authAdapter=new Zend_Auth_Adapter_DbTable($db,'users','username','password'); $authAdapter->setIdentity($data['username'])->setCredential(md5($data['password'])); $result=$authAdapter->authenticate(); if($result->isValid()){ $auth=Zend_Auth::getInstance(); $storage=$auth->getStorage(); $storage->write($authAdapter->getResultRowObject(array( 'id','username','role'))); $id=$auth->getIdentity()->id; $userModel=new UserModel(); $userModel->loginTime($id); // exit(); }else { $this->view->loginMessage="对不起,你的用户名或密码不符"; } } } } }
3/
可以在model中定义几个查询的方法,这样在控制页中就可以轻松调用。如果查询条件过多(即数据表有多个查询字段)则可以使用array作为$where查询条件。