• Yii 1.1.17 二、Gii创建后台与后台登录验证


    一、用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,页面如下:

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

    3、创建后台模块

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

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

     4、引入admin后台模块

    在 main.php 中配置,添加 admin 模块:

    '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类文件源码:frameworkwebwidgetsCActiveForm.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/xxx';  // xxx 是布局文件 xx.php

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

    <?php echo $content; ?>

  • 相关阅读:
    python爬虫实战(八)--------知乎
    python爬虫实战(七)--------伯乐在线文章(模版)
    python分布式爬虫打造搜索引擎--------scrapy实现
    VS2010与SVN
    ASP.net 自定义控件GridView
    Asp.net Ajax提供PageMethods调用
    JSON串行化
    JOSN反串行化
    WebRequestManager对象的使用
    WebRequest调用
  • 原文地址:https://www.cnblogs.com/mingc/p/6747129.html
Copyright © 2020-2023  润新知