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

时间: 2024-11-02 19:23:02

Yii 1.1.17 实战入门(二)的相关文章

Yii 1.1.17 实战入门(六)

开启路由 1.在配置文件main.php的components中 定义如下: // 定义路由 'urlManager'=>array( // URL模式为PATHINFO 'urlFormat'=>'path', //隐藏index.php入口名 'showScriptName' => false, //路由规则 'rules'=>array( //要映射的前台地址 => 实际地址 的路由映射 'index.html' => array('index/index'),

Yii 1.1.17 实战入门(四)

属性标签与规则设置 当进入网站页面,将会读数据库返回信息到模板上.那么,现在定义模型中的属性在模板标签上的显示, 也就是模型属性到前台标签的映射 // 定义模型属性到前台标签的映射 public function attributeLabels(){ return array( // '表字段' => '<label>标签的内容' 'username' => '用户名' ); } 这将为username属性生成一个<label>用户名</label>的提示标

Yii 1.1.17 实战入门(三)

数据库连接 1.配置连接参数 在database.php里面开启: 'db' => array( 'connectionString' => 'mysql:host=127.0.0.1;dbname=blog', 'emulatePrepare' => true, // PDO扩展 'username' => 'root', 'password' => '', 'charset' => 'utf8', 'tablePrefix' => 'yii_', // 表前缀

Yii 1.1.17 实战入门(五)

分页类使用 1.在控制器中, // 实例化 $criteria = new CDbCriteria(); $articleModel = Article::model(); // 分页 $total = $articleModel->count($criteria); //总记录数 $page = new CPagination($total); //实例化分页类 $page->pageSize = 3; //每页3条 $page->applyLimit($criteria); //截取

React-Native入门指南——第4篇react-native布局实战(二)

React-Native入门指南 github:https://github.com/vczero/react-native-lession React-Native:用JavaScript开发你的原生应用,释放Native的UI体验,体验 Hybird开发效率. 最近一个星期写的文章如下,链接是github page的,其实也可以在系列博客找到相应文章: 第1篇hello react-native 第2篇认识代码结构 第3篇css和布局 第4篇学会react-native布局(一) 第4篇re

Spring Boot 揭秘与实战(二) 数据缓存篇 - 快速入门

文章目录 1. 声明式缓存 2. Spring Boot默认集成CacheManager 3. 默认的 ConcurrenMapCacheManager 4. 实战演练5. 扩展阅读 4.1. Maven 依赖 4.2. 开启缓存支持 4.3. 服务层 4.4. 控制层 4.5. 运行 4.6. 课后作业 6. 源代码 为了提高性能,减少数据库的压力,使用缓存是非常好的手段之一.本文,讲解 Spring Boot 如何集成缓存管理. 声明式缓存 Spring 定义 CacheManager 和

Docker从入门到实战(二)

一步一步走,写小白都能看懂的文章,将持续更新中,敬请期待! Docker从入门到实战(二) 一:什么是docker Docker是一个开源的应用容器引擎,开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到主流的Linux.macOS.Windows机器上,实现虚拟化. Docker用Go语言写成,是一个重新定义了程序开发测试.交付和部署过程的开放平台. 二:Docker与虚拟机的区别 虚拟机和Docker最明显的差别是虚拟机需要安装操作系统(安装Guest OS)才能执行应用程序

[swift实战入门]手把手教你编写2048(二)

上篇地址:swift实战入门之手把手教你编写2048(一) github地址:https://github.com/scarlettbai/2048.git. 上篇文章已经中已经把2048的游戏区块画好了,这篇来加入计分板以及往游戏面板中插入数字块 计分板同样作为一个view,我们新建一个ScoreView.swift文件,代码如下: import UIKit //这里协议的作用是方便别的类中调用计分板的scoreChanged方法 protocol ScoreProtocol{ func sc

[转帖]脑残式网络编程入门(二):我们在读写Socket时,究竟在读写什么?

脑残式网络编程入门(二):我们在读写Socket时,究竟在读写什么? http://www.52im.net/thread-1732-1-1.html 1.引言 本文接上篇<脑残式网络编程入门(一):跟着动画来学TCP三次握手和四次挥手>,继续脑残式的网络编程知识学习 ^_^. 套接字socket是大多数程序员都非常熟悉的概念,它是计算机网络编程的基础,TCP/UDP收发消息都靠它.我们熟悉的web服务器底层依赖它,我们用到的MySQL关系数据库.Redis内存数据库底层依赖它.我们用微信和别