首页 > 代码库 > Yii 1.1.17 实战入门(二)

Yii 1.1.17 实战入门(二)

用gii创建后台模块

1、启用gii,在config/main.php

‘gii‘ => array(

  ‘class‘ => ‘system.gii.GiiModule‘,

  ‘password‘ => ‘Enter your password here‘, //设置密码

  ‘ipFilters‘ => array(‘127.0.0.1‘, ‘::1‘),

),

 

2、访问gii

在浏览器地址栏键入:127.0.0.1/yii/blog/index.php?r=模块名字,回车确定    (这里模块名就是gii了)

输入配置中设置的密码,进入gii,页面如下:

技术分享

PS:开启路由的情况下,有时候会无法访问哦,建议临时关闭路由。

 

3、创建后台模块

 点击 Module Generator 创建模块,新页面中输入模块ID,Preview点击预览,确定创建。

技术分享

这样在protected目录就有了modules/admin/模块目录

 

 4、引入admin后台模块

在main.php中配置:

‘modules‘=>array(
  ‘gii‘=>array(
    ...
  ),

  ‘admin‘, //引入admin后台模块
),

 

5、如何访问模块

127.0.0.1/yii/blog/index.php?r=模块/控制器/操作

 

 

小物件widget使用

CActiveForm组件,可以创建基于模型 数据的可交互HTML 表单

<?php $form = $this->beginWidget(‘CActiveForm‘); ?>

<?php echo $form->textField(模型实例,模型中属性名,html标签属性); ?>

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

 

 

这将在视图中创建一个input[type=‘text‘]表单元素。

更多创建方法参考CActiveForm类文件源码:framework\web\widgets\CActiveForm.php

 

 

后台模块登录页验证码使用

1、控制器中建立actions方法

public function actions(){

  return array(

    ‘captcha‘ => ‘CCaptchaAction‘,

    ‘width‘ => 80,

    ‘height‘ => 25,

    ‘minLength‘ => 4,

    ‘maxLength‘ => 4

  );

}

 

2、视图中调用验证码生成组件

普通写法:

<?php $this->widget(‘CCaptcha‘); ?>

 

带有点击刷新:

<?php

  echo $this->widget(‘CCaptcha‘, array(

    ‘showRefreshButton‘ => false,   //不显示刷新按钮

    ‘clickableImage‘ => true,          //单击图片更换验证码

    ‘imageOptions‘ => array(

      ‘alt‘ => ‘点击刷新‘,

      ‘title‘ => ‘点击刷新‘

      ‘style‘ => ‘cursor: pointer;‘

    )

  );

?>

 

显示错误信息:

<?php echo $form->error(模型实例,模型属性);

 

3、修改核心类(如果点击可刷新就不用修改了):

在framework/web/widgets/captcha/CCaptchaAction.php

 

修改run方法里面:

$this->renderImage($this->getVerifyCode(true)); //传入参数true

 

 

4、设置验证规则

在loginForm.php(YII自带的登录模型)的rules方法里:

public function rules()

{

  return array(

    // array(模型属性,‘captcha‘, ‘message‘ => 错误信息),

    array(‘captcha‘, ‘captcha‘, ‘message‘ => ‘验证码有误‘)

  );
}

 

5、触发验证

表单元素都生成好了,规则也定义了,接下来触发验证

 

在浏览器中查看表单的提交地址,在对应的控制器操作中,处理登录表单:

$loginForm->attributes = $_POST[‘LoginForm‘]; //POST表单压入模型属性

$loginForm->validate();

 

 

为后台模块设置单独的布局文件

1、在protected/modules/admin下新建文件夹components,在components下新建Controller.php后台模块的基类控制器(可以参考前台基类控制器protected/components/Controller.php的代码)

2、在后台模块下的视图views文件夹里新建layouts文件夹,里面放置后台的布局文件

3、在后台的基类控制器components/Controller.php中,设置:

public $layout = ‘/layouts/xx‘; 这里xx是我们的布局文件xx.php

4、如果后台模块没有公共区域,直接在布局文件里:

<?php echo $content; ?>

 

Yii 1.1.17 实战入门(二)