Yii 2.0

目录

简介

概述

安装

模型

控制器

视图

小部件

实例

可访问方法

表单


简介

概述

Yii 2.0 需要 PHP 5.4.0+,支持Composer,相比较Yii 1.1属于完全重写的版本。

Yii 2.0中的路径别名必须用@开头,用于区分普通文件目录路径或URL。@Yii指向Yii安装目录。

Yii 2.0视图里的特殊变量$this不再指向当前控制器和小部件,而是指向视图对象。如果要在视图中访问控制器或者小部件,需要用$this->context

Yii 2.0支持SmartyTwig两种模板引擎。

Gii是yii里的一个模块,可用于生成一些Web站点常用功能的代码。

部署Yii2应用到线上时,应该把网站目录设置为应用的Web文件夹。

Yii2的应用主体是服务定位器,它提供了一些具有不同功能的应用组件来处理请求,例如db组件处理数据库相关服务。应用组件就像是全局变量,不应该注册过多,可以在/config/web.php的components配置项中查看Yii2里注册的一些应用组件。

安装

通过Composer安装最新的Yii2稳定版运行指令:

composer create-project --prefer-dist yiisoft/yii2-app-basic basic

本次安装的版本号是2.0.43。

安装完成后切换到应用目录【basic】下,启动PHP内置服务器可使用如下指令:

php yii serve

默认开启的端口号是8080。也可以在如上命令后面用--port参数指定端口号。

然后在浏览器地址栏访问http://localhost:8080/看到如下页面表示安装成功。

 访问http://localhost:8080/index.php?r=gii即可看到如下图所示的gii模块。

模型

yii\base\Model是模型类的基类且与数据表无关。yii\db\ActiveRecord类间接继承了yii\base\Model类并且添加了数据库处理,因此与数据表有关联。

如果模型数据验证【$model->Validate()】失败,可以通过$model->getErrors()获取错误详细信息。

Yii::$app代表了全局可访问的应用实例,能提供requestresponsedb等等特定功能组件。

控制器

使用render方法会自动加载视图布局文件/views/layouts/main.php。

控制器ID show-text 对应的控制器类名是ShowTextController,对应的视图文件夹名称是show-text。

控制器里方法名SayHello对应的访问名是say-hello,注意不是用下划线连接,而是用连字符-连接。

客户端提交的信息通过验证后,可以考虑用refresh()或者redirect()方法避免表单重复提交问题。

yii\Web\Response:redirect()方法默认返回的状态码是302,该状态码表示要访问的资源被临时转移到另一个URL上,可以设置状态码为301,表示要访问的资源已经被永久转移到另一个URL上。

视图

yii\helpers\Html encode方法是用来转换特殊字符的,避免XSS攻击。

小部件

yii\Widgets\ActiveForm类能够根据一个或多个数据模型里的设置来生成视图。

Yii提供了很多小部件用于生成复杂且动态的视图,可以把很多视图代码改写为小部件,以提高重用量,加快开发效率。

实例

可访问方法

控制器 /controllers/SiteController.php

public function actionSay($message = 'Hello World!')
{
    return $this->render('say', ['message' => $message]);
}

视图 /views/site/say.php

<?php
use yii\helpers\Html;
?>

<?= Html::encode($message) ?>

然后就可以通过http://localhost:8080/index.php?r=site/say【&message=】来访问了。

表单

模型类 /models/EntryForm.php

<?php
namespace app\models;

use yii\base\Model;

class EntryForm extends Model
{
    public $username;
    public $email;

    public function rules()
    {
        return [
            [['username', 'email'], 'required'],
            ['email', 'email'],
        ];
    }
}

控制器 /controllers/SiteController.php

public function actionEntry()
{
    $model = new EntryForm();
    if ($model->load(Yii::$app->request->post()) && $model->validate()) {
        return $this->render('entry-form', ['model' => $model]);
    } else {
        return $this->render('entry', ['model' => $model]);
    }
}

视图 /views/site/entry.php

<?php
use yii\helpers\Html;
use yii\Widgets\ActiveForm;

?>

<?php $form = ActiveForm::begin();?>

<?=$form->field($model, 'username');?>
<?=$form->field($model, 'email');?>

<div class="form-group">
	<?=Html::submitButton('Submit', ['class' => 'btn btn-primary']);?>
</div>

<?php ActiveForm::end();?>

视图 /views/site/entry-form.php

<?php

use yii\helpers\Html;

?>

<p>
	You have submitted the following information:
</p>

<ul>
	<li><label></label><?=Html::encode($model->username);?></li>
	<li><label></label><?=Html::encode($model->email);?></li>
</ul>

然后就可以通过http://localhost:8080/index.php?r=site/entry来测试表单了。

Yii 2.0 权威指南 本教程的发布遵循 Yii 文档使用许可. 版权所有 2014 (c) Yii Software LLC. 介绍 已定稿 关于 Yii 已定稿 从 Yii 1.1 升级 入门 已定稿 安装 Yii 已定稿 运行应用 已定稿 第一次问候 已定稿 使用 Forms 已定稿 玩转 Databases 已定稿 用 Gii 生成代码 已定稿 更上一层楼 应用结构 已定稿 结构概述 已定稿 入口脚本 已定稿 应用 已定稿 应用组件 已定稿 控制器(Controller) 已定稿 视图(View) 已定稿 模型(Model) 已定稿 过滤器 已定稿 小部件(Widget) 已定稿 模块(Module) 已定稿 前端资源(Asset) 已定稿 扩展(extensions) 请求处理 已定稿 运行概述 已定稿 引导(Bootstrapping) 已定稿 路由(Route)引导与创建 URL 已定稿 请求(Request) 已定稿 响应(Response) 已定稿 Sessions(会话)和 Cookies 已定稿 错误处理 已定稿 日志 关键概念 已定稿 组件(Component) 已定稿 属性(Property) 已定稿 事件(Event) 已定稿 行为(Behavior) 已定稿 配置(Configurations) 已定稿 类自动加载(Autoloading) 已定稿 别名(Alias) 已定稿 服务定位器(Service Locator) 已定稿 依赖注入容器(DI Container) 配合数据库工作 编撰中 数据访问对象(DAO) - 数据库连接、基本查询、事务和模式操作 编撰中 查询生成器(Query Builder) - 使用简单抽象层查询数据库 编撰中 活动记录(Active Record) - 活动记录对象关系映射(ORM),检索和操作记录、定义关联关系 编撰中 数据库迁移(Migration) - 在团体开发中对你的数据库使用版本控制 待定中 Sphinx 待定中 Redis 待定中 MongoDB 待定中 ElasticSearch 接收用户数据 编撰中 创建表单 已定稿 输入验证 编撰中 文件上传 待定中 多模型同时输入 显示数据 编撰中 格式化输出数据 待定中 分页(Pagination) 待定中 排序(Sorting) 编撰中 数据提供器 编撰中 数据小部件 编撰中 主题 安全 编撰中 认证(Authentication) 编撰中 授权(Authorization) 编撰中 处理密码 待定中 客户端认证 待定中 安全领域的最佳实践 缓存 已定稿 概述 已定稿 数据缓存 已定稿 片段缓存 已定稿 分页缓存 已定稿 HTTP 缓存 RESTful Web 服务 已定稿 快速入门 已定稿 资源 已定稿 路由 已定稿 格式化响应 已定稿 授权验证 已定稿 速率限制 已定稿 版本化 已定稿 错误处理 已定稿 测试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值