用yii1.8框架执行简单的数据库的增删改查,及部分页面配置(yii框架的下载不再讲解);
一、yii框架的开发前的基本配置:
首先在config/main.php中配置默认的controller (框架默认的controller为SiteController),我们在这里创建IndexController,切记我们的一个Controller对应一个同名字的前端页面文件夹 (同目录的views下),例如IndexController对应的是views/index的文件夹;默认的方法定义:
return array( 'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..', 'name'=>'My Web Application', // preloading 'log' component 'preload'=>array('log'), //加上这句话,就是默认 的Controller为IndexController 'defaultController'=>'Index',
然后我们可以在上述的views/index下创建index.php,然后在IndexController 直接跳转:
class IndexController extends Controller { public function actionIndex(){ $this->render('index'); } }
因为上文 已经讲述 他们是一一对应的关系,所以默认的就是views/index目录下的index.php页面;
然后我们就配置 一下数据库,就开始一个小网站demo的建立,回到 我们的 config /main.php页面,写入以下代码
'db'=>array( 'connectionString' => 'mysql:host=127.0.0.1;dbname=db_blog', 'emulatePrepare' => true, 'username' => 'root', 'password' => '', 'charset' => 'utf8', //数据库的表前缀 'tablePrefix' => 't_', //打开数据库调试 'enableParamLogging' => true ),
然后我们 就可以直接 运用yii模块 创建后台框架了,方法如下:
①首先打开主配置main.php中的gii模块
//初始状态 'modules'=>array( // uncomment the following to enable the Gii tool // 'gii'=>array( // 'class'=>'system.gii.GiiModule', // 'password'=>'123', // // If removed, Gii defaults to localhost only. Edit carefully to taste. // 'ipFilters'=>array('127.0.0.1','::1'), // ), ), //创建过后状态 'modules'=>array( // uncomment the following to enable the Gii tool // 'gii'=>array( // 'class'=>'system.gii.GiiModule', // 'password'=>'123', // // If removed, Gii defaults to localhost only. Edit carefully to taste. // 'ipFilters'=>array('127.0.0.1','::1'), // ), 'admin' ),
首先在 初始状态下,我们取消注释,设置password,登录 gii模块的时候需要使用,但是这个gii模块是不安全的,所以我们 创建过后 要关闭它;取消注释后,登录在自己的默认主页路径下+?r=gii,例如http://localhost/yii/blog/index.php?r=gii;这时候输入 自己定义的密码,然后进入首页选择最下面的模块,一路默认,最后要输入自己的ID,我输入的 ID名字为admin,而admin是 一个模块,所以要在 主配置文件中配置一下,就有了我创建 过后的那个代码状态;
再然后 我们就可以愉快的 写代码了;
二、登录实现
进入 刚才我们创建的后台模块;老规矩首先创建我们的LoginController及所对应前端页面,把登录页面的样式写好:
<div id="divBox"> <?php $form = $this->beginWidget('CActiveForm') ?> <?php echo $form->textField($loginForm, 'username', array('id'=>'userName')) ?> <?php echo $form->passwordField($loginForm, 'password', array('id'=>'psd')) ?> <?php echo $form->textField($loginForm, 'captcha', array('id'=>'verify')) ?> <input type="submit" id="sub" value="login"/> <!-- 验证码 --> <div class="captcha"> <?php $this->widget('CCaptcha',array('showRefreshButton'=>false, 'clickableImage'=>true, 'imageOptions'=>array('alt'=>'点击换图', 'title'=>'点击换图', 'style'=>'cursor:pointer'))); ?> </div> <?php $this->endWidget() ?> <div class="four_bj"> <p class="f_lt"></p> <p class="f_rt"></p> <p class="f_lb"></p> <p class="f_rb"></p> </div> //验证,提示信息部分 <ul id="peo"> <li class="error"><?php echo $form->error($loginForm,'username') ?></li> </ul> <ul id="psd"> <li class="error"><?php echo $form->error($loginForm,'password') ?></li> </ul> <ul id="ver"> <li class="error"><?php echo $form->error($loginForm,'captcha') ?></li> </ul> </div>
这块我们首先先不讲代码,先讲一下 页面布局的问题,大家可能都很好奇我的这个页面 怎么只有 一个div,这就要谈到这个框架自带的定义页面公共部分的人性化功能,只需要在components/Controller.php中定义一下,公共部分的页面为//layouts/column1,定义代码如下:
class Controller extends CController { /** * @var string the default layout for * the controller view. * Defaults to '//layouts/column1', * meaning using a single column layout. * See 'protected/views/layouts/column1.php'. */ public $layout='//layouts/column1';
后端的公共页面在自己创建的那个模块里面定义,原理一样;
LoginController.php代码如下
<?php /** * 后台登陆控制器 */ class LoginController extends Controller{ /** * 后台登陆模板 */ public function actionIndex(){ $loginForm = new LoginForm(); if(isset($_POST['LoginForm'])){ $loginForm->attributes = $_POST['LoginForm']; if($loginForm->validate()&& $loginForm->login()){ Yii::app()->session['logintime'] = time(); $this->redirect(array('default/index')); } } $this->render('index',array('loginForm'=>$loginForm)); } public function actions(){ return array( 'captcha' => array( 'class' => 'system.web.widgets.captcha.CCaptchaAction', 'height' => 25, 'width' => 80, 'minLength'=> 4, 'maxLength'=> 4 ), ); } public function actionOut(){ Yii::app()->user->logout(); $this->redirect(array('index')); } }
这里面的LoginForm是框架自动生成的,我们需要做的就是,调整为我们自己需要的样子;
LoginForm.php代码 如下:
<?php /** * LoginForm class. * LoginForm is the data structure for keeping * user login form data. It is used by the 'login' action of 'SiteController'. */ class LoginForm extends CFormModel { public $username; public $password; public $rememberMe; public $captcha; private $_identity; /** * Declares the validation rules. * The rules state that username and password are required, * and password needs to be authenticated. */ public function rules() { return array( array('username', 'required', 'message'=>'用户名必须填写'), array('password', 'required', 'message'=>'密码必须填写'), // rememberMe needs to be a boolean array('rememberMe', 'boolean'), // password needs to be authenticated array('password', 'authenticate'), array('captcha', 'captcha', 'message'=>'验证码错误') ); } /** * Declares attribute labels. */ public function attributeLabels() { return array( 'username'=>'用户名', 'password'=>'密码', 'rememberMe'=>'Remember me next time', ); } /** * Authenticates the password. * This is the 'authenticate' validator as declared in rules(). * @param string $attribute the name of the attribute to be validated. * @param array $params additional parameters passed with rule when being executed. */ public function authenticate($attribute,$params) { if(!$this->hasErrors()) { $this->_identity=new UserIdentity($this->username,$this->password); if(!$this->_identity->authenticate()) $this->addError('password','用户性名或者密码错误'); } } /** * Logs in the user using the given username and password in the model. * @return boolean whether login is successful */ public function login() { if($this->_identity===null) { $this->_identity=new UserIdentity($this->username,$this->password); $this->_identity->authenticate(); } if($this->_identity->errorCode===UserIdentity::ERROR_NONE) { $duration=$this->rememberMe ? 3600*24*30 : 0; // 30 days Yii::app()->user->login($this->_identity,$duration); return true; } else return false; } }
首先加上我们页面的验证码 的元素,框架自带的有这个js插件,我们就是机械性的使用一下就行了,然后就是设置我们的规则rules属性 ,这些规则 的具体意思可以看我的上一篇博客;
UserIdentity这个方法也是框架自带的(路径components/UserIdebtity),我们需要做的就是改成我们自己需要的样子;代码如下
public function authenticate() { $userInfo = User::model()->find('username=:name', array(':name'=>$this->username)); if($userInfo == NULL){ $this->errorCode=self::ERROR_USERNAME_INVALID; return false; } if($userInfo->password !== $this->password){ $this->errorCode=self::ERROR_PASSWORD_INVALID; return false; } $this->errorCode=self::ERROR_NONE; return true; }
这样我们的登陆就完成了,具体逻辑不再讲;
三、用户的增删改查
相关推荐
Yii Yii框架 Yii框架快速入门,自己整理的很全的,很容易看懂
Yii框架的核心特性包括: 1. **MVC模式**:Yii遵循主流的MVC(模型-视图-控制器)设计模式,使得代码结构清晰,易于维护。 2. **面向对象编程**:Yii是一个纯OOP框架,完全基于面向对象的编程思想,提供高度封装和可...
7. 完善的文档:Yii框架提供了详尽的中文手册和API文档,方便开发者学习和使用。 8. 社区支持:Yii拥有活跃的社区和大量的第三方扩展,开发者可以通过社区获得帮助和丰富的插件资源。 安装Yii框架的过程相对简单,...
以上便是Yii框架学习笔记的核心内容,涵盖了从基础入门到高级特性的全面知识点。通过这些知识点的学习,开发者可以深入理解Yii框架的工作原理和使用方法,从而在实际开发中更高效地运用Yii框架构建Web应用。
《Yii框架深度剖析》配套代码 本书不是简单地介绍如何使用 Yii 框架,而是站在框架设计的高度,从源代码级别深 度剖析。本书首先介绍 PHP 框架技术的概念及其应用领域,然后开始仿照 Yii 框架源代码 自定义框架,...
“yii框架中文手册教程.pdf”是Yii框架的中文版官方手册,它是学习Yii框架的重要资源。这份PDF文档通常会包括以下内容: 1. **安装与配置**:介绍如何在服务器上安装Yii,以及设置基本的项目环境。 2. **快速入门**...
一、Yii框架概述: 1. 高性能:Yii通过使用缓存机制、优化的查询构建器和预编译的模板引擎等技术,提供了比其他PHP框架更快的运行速度。 2. MVC设计模式:遵循MVC模式,使得模型、视图和控制器之间职责分明,有利于...
一、Yii框架概述 Yii框架遵循MVC(Model-View-Controller)架构模式,提供了丰富的特性,如缓存管理、安全控制、数据库访问、表单验证等。它还支持AJAX,能够轻松创建动态Web应用。Yii的性能优秀,因为其代码经过了...
### 一、Yii框架基础 1. **安装与配置**:Yii可以通过Composer(PHP的依赖管理工具)进行安装,同时手册会介绍如何设置项目目录结构、配置Web服务器以及数据库连接。 2. **MVC架构**:Yii遵循Model-View-...
Yii 框架简介 全面轻松入手Yii 从这里开始 简单 明了 言简意赅
Yii框架是PHP领域的一款高效、灵活的Web应用开发框架,其设计模式基于MVC(Model-View-Controller),使得开发者可以快速构建复杂而稳定的Web应用。让我们深入了解一下Yii框架的执行流程及其部分源码分析。 1. **...
YII框架的开发中文文档,帮助哪些正在学习YII框架的同学们,
在这个"yii_blog 博客系统"中,你将学习到如何使用Yii框架来搭建一个简单的博客平台。 首先,Yii框架的核心特性包括MVC(Model-View-Controller)设计模式、主动记录(ActiveRecord)模式、缓存管理、身份验证和...
Yii框架是一款基于组件的高性能PHP框架,专为Web2.0应用开发而设计。它能够帮助开发者快速构建高效、可扩展的Web应用。...通过学习和实践这个项目,开发者可以深入理解Yii框架,并能应用于实际的电子商务开发中。
Yii框架提供了一系列预构建的组件,如数据库访问对象(DAO)、ActiveRecord、MVC(模型-视图-控制器)架构等,使得开发者能够快速地搭建和开发Web应用。其内置的代码生成工具Gii可以帮助自动生成常见的CRUD操作和...
在PHP开发中,Yii框架是一个高效且易于学习的开源Web应用框架,它提供了一系列强大的工具,使得开发者可以快速地构建高质量的Web应用。在数据库管理方面,Yii框架提供了丰富的功能,其中包括数据库备份模块。这个...
Yii框架是PHP开发中的一个高性能、基于组件的MVC(模型-视图-控制器)架构,专为开发者提升效率而设计。它具有优秀的性能、强大的缓存支持、灵活的数据库访问层以及丰富的类库,使得开发复杂的Web应用变得更加便捷。...
本教程将深入探讨Yii框架的核心概念和使用方法,同时提供一份中文手册教程,以便于中文使用者更好地理解和应用。 首先,Yii框架的核心特性包括MVC(模型-视图-控制器)设计模式、Active Record ORM(对象关系映射)...