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来测试表单了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值