yii框架学习笔记

2018-02-05 10:36:27来源:oschina作者:lujc人点击

分享

纯oop框架


官网:http://www.yiiframework.com/ 中文网站:http://www.yiichina.com/


打开cmd找到yii目录里面的framework输入yiic webapp 项目名称(比如yiic webapp ../one)one就是这个项目的名称,



控制器
一、创建控制器
class IndexController extends Controller {
/**
* 默认方法
*/
public function actionIndex()
{
echo 666;
}}

访问 例如:http://localhost/yii-1.1.18.018a89/study/index.php?r=index/index


r是route缩写,后面第一个为控制器,第二个为方法


二、配置默认控制器

在cofig里面的main.php增加代码如下


//设置默认控制器
'defaultController' => 'Index',


视图
一、载入视图
$this->render('index');会载入布局
$this->renderPartial('index');不会载入布局,也不会加载框架自带的jquery
二、给视图分配数据
$this->render('index',$data);
三、视图处理分配的数据
<?php foreach($article as $v): ?>
  • <?php echo $v->title;?>

  • <?php endforeach ?>
    四、布局

    用render自动加载公共区域并在views/layouts下面的文件就是布局文件


    位置:components/Controller.php



    五、载入外部文件

    扩展自定义函数

    在protected目录下建立functions.php文件



    引入函数,在index.php下加入以下代码


    include_once "./protected/functions.php";
    通过gii创建modules

    将config下main.php里modules注释打开



    访问 http://localhost/yii-1.1.18.018a89/study/index.php?r=gii ,点击Module Generator,如下图



    需要访问新创建的admin,需要在main.php,gii下面加入admin如下图



    访问地址例如:http://localhost/yii-1.1.18.018a89/study/index.php?r=admin/index/test


    小物件(widget)使用

    前置条件如下:



    小物件使用具体代码如下:


    <?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')) ?>



    <?php $this->widget('CCaptcha',array('showRefreshButton'=>false,'clickableImage'=>true,'imageOptions'=>array('alt'=>'点击换图','title'=>'点击换图','style'=>'cursor:pointer'))); ?>

    <?php $this->endWidget() ?>

    • <?php echo $form->error($loginForm,'username') ?>



    • <?php echo $form->error($loginForm,'password') ?>



    • <?php echo $form->error($loginForm,'captcha') ?>


    注意:小物件里面用到的名称需要在对应的model层进行定义


    验证码控制器使用方法


    public function actions(){
    return array(
    'captcha'=> array(
    'class'=> 'system.web.widgets.captcha.CCaptchaAction',
    'height' => 25,
    'width' => 80,
    'minLength'=> 4,
    'maxLength'=> 4
    ),
    );
    }

    若需要验证码变化,需要到framework/web/widgets/captcha/CCaptchaAction类里面修改核心类代码


    设置验证规则


    在对应的model层进行规则验证


    public function rules()
    {
    return array(
    // username and password are required
    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'=>'验证码错误')
    );
    }
    数据库配置
    一、配置数据库

    在config下面的main.php中配置如下代码,下面配置在framework/db/CDbConnection.php中可以找到


    'db'=>array(
    'connectionString' => 'mysql:host=127.0.0.1;dbname=blog_test',
    'emulatePrepare' => true,//pdo扩展
    'username' => 'root',
    'password' => '',
    'charset' => 'utf8',
    'tablePrefix' => 'hd_',
    'enableParamLogging'=> true//开启调试信息的sql语句具体值信息
    ),
    二、测试连接

    使用var_dump(Yii::app()->db);判断是否连接数据库成功


    定义模型

    必须有model和tabaleName方法


    <?php
    class User extends CActiveRecord{
    public $password1;
    public $password2;
    public static function model($className = __CLASS__){
    return parent::model($className);
    }
    public function tableName(){
    return "{{admin}}";
    }
    public function attributeLabels(){
    return array(
    'password' => '原始密码',
    'password1'=> '新密码',
    'password2'=> '确认密码'
    );
    }
    public function rules(){
    return array(
    array('password', 'required', 'message'=>'原始密码必填'),
    array('password', 'check_passwd'),
    array('password1', 'required', 'message'=>'新密码必填'),
    array('password2', 'required', 'message'=>'确认密码必填'),
    array('password2', 'compare', 'compareAttribute'=>'password1', 'message'=>'两次密码不相同'),
    );
    }
    public function check_passwd(){
    $userInfo = $this->find('username=:name', array(':name'=>Yii::app()->user->name));
    if(md5($this->password) != $userInfo->password){
    $this->addError('password', '原始密码不正确');
    }
    }
    }

    微信扫一扫

    第七城市微信公众平台