`

yii框架学习(一)

    博客分类:
  • PHP
PHP 
阅读更多

      用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;

	}

 这样我们的登陆就完成了,具体逻辑不再讲;

三、用户的增删改查

 

 

分享到:
评论

相关推荐

    基于微信小程序的在线办公小程序答辩PPT.pptx

    基于微信小程序的在线办公小程序答辩PPT.pptx

    机器学习(预测模型):2000年至2015年期间193个国家的预期寿命和相关健康因素的数据

    这个数据集来自世界卫生组织(WHO),包含了2000年至2015年期间193个国家的预期寿命和相关健康因素的数据。它提供了一个全面的视角,用于分析影响全球人口预期寿命的多种因素。数据集涵盖了从婴儿死亡率、GDP、BMI到免疫接种覆盖率等多个维度,为研究者提供了丰富的信息来探索和预测预期寿命。 该数据集的特点在于其跨国家的比较性,使得研究者能够识别出不同国家之间预期寿命的差异,并分析这些差异背后的原因。数据集包含22个特征列和2938行数据,涉及的变量被分为几个大类:免疫相关因素、死亡因素、经济因素和社会因素。这些数据不仅有助于了解全球健康趋势,还可以辅助制定公共卫生政策和社会福利计划。 数据集的处理包括对缺失值的处理、数据类型转换以及去重等步骤,以确保数据的准确性和可靠性。研究者可以使用这个数据集来探索如教育、健康习惯、生活方式等因素如何影响人们的寿命,以及不同国家的经济发展水平如何与预期寿命相关联。此外,数据集还可以用于预测模型的构建,通过回归分析等统计方法来预测预期寿命。 总的来说,这个数据集是研究全球健康和预期寿命变化的宝贵资源,它不仅提供了历史数据,还为未来的研究和政策制

    基于微信小程序的“健康早知道”微信小程序答辩PPT.pptx

    基于微信小程序的“健康早知道”微信小程序答辩PPT.pptx

    基于微信小程序的电影交流平台答辩PPT.pptx

    基于微信小程序的电影交流平台答辩PPT.pptx

    计算机字符编码GB18030.PDF

    计算机字符编码GB18030

    Hive 操作基础(进阶版)多级分区数据文件2

    Hive 操作基础(进阶版)多级分区数据文件2

    基于java的贫困生管理系统答辩PPT.pptx

    基于java的贫困生管理系统答辩PPT.pptx

    pandas-2.1.4-cp312-cp312-win_amd64.zip

    pandas whl安装包,对应各个python版本和系统(具体看资源名字),找准自己对应的下载即可! 下载后解压出来是已.whl为后缀的安装包,进入终端,直接pip install pandas-xxx.whl即可,非常方便。 再也不用担心pip联网下载网络超时,各种安装不成功的问题。

    TA_Lib轮子无需编译-TA_Lib-0.4.18-cp38-cp38-win32.whl.zip

    TA_lib库(whl轮子),直接pip install安装即可,下载即用,非常方便,各个python版本对应的都有。 使用方法: 1、下载下来解压; 2、确保有python环境,命令行进入终端,cd到whl存放的目录,直接输入pip install TA_lib-xxxx.whl就可以安装,等待安装成功,即可使用! 优点:无需C++环境编译,下载即用,方便

    课设毕设基于SpringBoot+Vue的瑜伽体验课预约系统源码可运行.zip

    本压缩包资源说明,你现在往下拉可以看到压缩包内容目录 我是批量上传的基于SpringBoot+Vue的项目,所以描述都一样;有源码有数据库脚本,系统都是测试过可运行的,看文件名即可区分项目~ |Java|SpringBoot|Vue|前后端分离| 开发语言:Java 框架:SpringBoot,Vue JDK版本:JDK1.8 数据库:MySQL 5.7+(推荐5.7,8.0也可以) 数据库工具:Navicat 开发软件: idea/eclipse(推荐idea) Maven包:Maven3.3.9+ 系统环境:Windows/Mac

    tornado-6.2b2.tar.gz

    tornado-6.2b2.tar.gz

    javawe论坛项目 原生技术

    javawe论坛项目 原生技术

    tornado-6.2b1-cp310-cp310-macosx_10_9_universal2.whl

    tornado-6.2b1-cp310-cp310-macosx_10_9_universal2.whl

    基于司机信用评价的货运管理系统(springboot+vue+mysql+说明文档).zip

    随着物流行业的快速发展,货运管理变得愈发重要。为了提高货运效率,确保货物安全,我们开发了这款基于司机信用评价的货运管理系统。 该系统主要包含了货物信息管理、订单评价管理、货主管理等多个功能模块。在货物信息管理模块中,用户可以查看和管理货物的详细信息,包括货物名称、规格、装车状态、运输状态以及卸货状态等,方便用户随时掌握货物的动态。 订单评价管理模块是该系统的核心之一,它允许货主对司机的服务进行评价,系统会根据评价数据对司机进行信用评分。这一功能不仅有助于提升司机的服务质量,还能为货主提供更加可靠的货运选择。 此外,货主管理模块提供了货主信息的录入、修改和查询等功能,方便用户管理自己的货主资料。系统界面简洁明了,以蓝色为主色调,设计现代且专业,为用户提供了良好的使用体验。 通过该系统,用户可以轻松实现货物信息的查看和管理,对司机的服务进行评价,提高货运效率和服务质量。同时,系统也为司机提供了一个展示自我、提升信用的平台,有助于推动物流行业的健康发展。

    毕业生交流学习平台 SSM毕业设计 附带论文.zip

    毕业生交流学习平台 SSM毕业设计 附带论文 启动教程:https://www.bilibili.com/video/BV1GK1iYyE2B

    基于java的广场舞团答辩PPT.pptx

    基于java的广场舞团答辩PPT.pptx

    基于java的基于SSM的校园音乐平台答辩PPT.pptx

    基于java的基于SSM的校园音乐平台答辩PPT.pptx

    安装包JIRATimeSLA

    Jira插件安装包

    【java毕业设计】基于图像识别与分类的中国蛇类识别系统源码(springboot+vue+mysql+说明文档).zip

    项目经过测试均可完美运行! 环境说明: 开发语言:java jdk:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse

    tornado-6.2b2-cp37-abi3-win_amd64.whl

    tornado-6.2b2-cp37-abi3-win_amd64.whl

Global site tag (gtag.js) - Google Analytics