yii2框架

本章描述了如何在你的应用中创建一个新的 “Hello” 页面。为了实现这一目标,将会创建一个操作和一个视图

  • 应用将会分派页面请求给操作
  • 操作将会依次渲染视图呈现 “Hello” 给最终用户

创建操作

为了 “Hello”,需要创建一个 say 操作,从请求中接收 message 参数并显示给最终用户。如果请求没有提供 message 参数,操作将显示默认参数 “Hello”。

操作必须声明在控制器中。为了简单起见,你可以直接在 SiteController 控制器里声明 say 操作。这个控制器是由文件controllers/SiteController.php 定义的。以下是一个操作的声明:

<?php

namespace app\controllers;

use yii\web\Controller;

class SiteController extends Controller
{
    // ...其它代码...

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

创建视图

视图是你用来生成响应内容的脚本。为了说 “Hello”,你需要创建一个 say 视图,以便显示从操作方法中传来的 message 参数。

<?php
use yii\helpers\Html;
?>
<?= Html::encode($message) ?>

say 视图应该存为 views/site/say.php 文件。当一个操作中调用了 yii\web\Controller::render() 方法时,它将会按 views/控制器 ID/视图名.php 路径加载 PHP 文件。

创建模型

模型类 EntryForm 代表从用户那请求的数据,该类如下所示并存储在 models/EntryForm.php 文件中。请参考类自动加载章节获取更多关于类命名约定的介绍。

<?php

namespace app\models;

use yii\base\Model;

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

    public function rules()
    {
        return [
            [[‘name‘, ‘email‘], ‘required‘],
            [‘email‘, ‘email‘],
        ];
    }
}

<?php $model = new EntryForm(); $model->name = ‘Qiang‘; $model->email = ‘bad‘; if ($model->validate()) { // 验证成功! } else { // 失败! // 使用 $model->getErrors() 获取错误详情 }

<?php namespace app\controllers; use Yii; use yii\web\Controller; use app\models\EntryForm; class SiteController extends Controller { // ...其它代码... public function actionEntry() { $model = new EntryForm; if ($model->load(Yii::$app->request->post()) && $model->validate()) { // 验证 $model 收到的数据 // 做些有意义的事 ... return $this->render(‘entry-confirm‘, [‘model‘ => $model]); } else { // 无论是初始化显示还是数据验证错误 return $this->render(‘entry‘, [‘model‘ => $model]); } } }

创建视图

最后创建两个视图文件 entry-confirm 和 entry。他们会被刚才创建的 entry 操作渲染。

entry-confirm 视图简单地显示提交的 name 和 email 数据。视图文件保存在 views/site/entry-confirm.php

<?php
use yii\helpers\Html;
?>
<p>You have entered the following information:</p>

<ul>
    <li><label>Name</label>: <?= Html::encode($model->name) ?></li>
    <li><label>Email</label>: <?= Html::encode($model->email) ?></li>
</ul>

entry 视图显示一个 HTML 表单。视图文件保存在 views/site/entry.php

<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
?>
<?php $form = ActiveForm::begin(); ?>

    <?= $form->field($model, ‘name‘) ?>

    <?= $form->field($model, ‘email‘) ?>

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

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

配置数据库连接

开始之前,请确保你已经安装了 PHP PDO 扩展和你所使用的数据库的 PDO 驱动(例如 MySQL 的 pdo_mysql)。对于使用关系型数据库来讲,这是基本要求。

驱动和扩展安装可用后,打开 config/db.php 修改里面的配置参数对应你的数据库配置。该文件默认包含这些内容:

<?php

return [
    ‘class‘ => ‘yii\db\Connection‘,
    ‘dsn‘ => ‘mysql:host=localhost;dbname=yii2basic‘,
    ‘username‘ => ‘root‘,
    ‘password‘ => ‘‘,
    ‘charset‘ => ‘utf8‘,
];

<?php namespace app\controllers; use yii\web\Controller; use yii\data\Pagination; use app\models\Country; class CountryController extends Controller { public function actionIndex() { $query = Country::find(); $pagination = new Pagination([ ‘defaultPageSize‘ => 5, ‘totalCount‘ => $query->count(), ]); $countries = $query->orderBy(‘name‘) ->offset($pagination->offset) ->limit($pagination->limit) ->all(); return $this->render(‘index‘, [ ‘countries‘ => $countries, ‘pagination‘ => $pagination, ]); } }
时间: 2024-08-26 13:31:04

yii2框架的相关文章

Yii2框架RESTful API教程(二) - 格式化响应,授权认证和速率限制

之前写过一篇Yii2框架RESTful API教程(一) - 快速入门,今天接着来探究一下Yii2 RESTful的格式化响应,授权认证和速率限制三个部分 一.目录结构 先列出需要改动的文件.目录如下: web ├─ common │ └─ models │ └ User.php └─ frontend ├─ config │ └ main.php └─ controllers └ BookController.php 二.格式化响应 Yii2 RESTful支持JSON和XML格式,如果想指定

YII2框架详解

yii2框架的安装我们在之前文章中已经提到下面我们开始了解YII2框架 Yii2的应用结构: 目录篇: advance版本的特点是:根目录下预先分配了三个模块,分别是前台.后台.控制台模块. 1.backend 它主要用于管理后台,网站管理员来管理整个系统. assets 目录用于存放前端资源包PHP类. 这里不需要了解什么是前端资源包,只要大致知道是用于管理CSS.js等前端资源就可以了. config 用于存放本应用的配置文件,包含主配置文件 main.php 和全局参数配置文件 param

Yii2框架RESTful API教程(一) - 快速入门

前不久做一个项目,是用Yii2框架写一套RESTful风格的API,就去查了下<Yii 2.0 权威指南 >,发现上面写得比较简略.所以就在这里写一篇教程贴,希望帮助刚接触Yii2框架RESTful的小伙伴快速入门. 一.目录结构 实现一个简单地RESTful API只需用到三个文件.目录如下: frontend ├─ config │ └ main.php ├─ controllers │ └ BookController.php └─ models └ Book.php 二.配置URL规则

yii2 框架为什么难在中国国内推广开来?

晚上准备重新安装yii2框架,然后运行 composer global require "fxp/composer-asset-plugin:1.0.0" 足足花费了30分钟才运行完毕... 然后在运行 composer create-project --prefer-dist yiisoft/yii2-app-basic basic 一直都是等待,忍不住开VPN,结果悲剧的事情就开始了.网络断了,是断路由,一直都是连接. 一筹莫展的焦急用手机开窝蜂数据,搜索答案,15分钟之后,再刷新

Yii2框架bootstrap样式理解

Yii2框架默认采用了bootstrap作为CSS风格,各种视图类组件都如此.之前一直采用默认风格,并在必要的时候添加或者修改一下class来达到目的.但在改版Yii1.1的orange项目时,发现之前也是套的模板,其实没有好好去理解一下bootstrap的那套规则,所以顺便大致梳理一下吧.以basic模板为例,对照http://v3.bootcss.com/css/ 上的内容进行. 看layouts/main.php,Yii2默认以HTML5文档类型进行的了,但语言默认是en-US,所以要改,

Yii2框架RESTful API教程

前不久做一个项目,是用Yii2框架写一套RESTful风格的API,就去查了下<Yii 2.0 权威指南 >,发现上面写得比较简略.所以就在这里写一篇教程贴,希望帮助刚接触Yii2框架RESTful的小伙伴快速入门. 一.目录结构 实现一个简单地RESTful API只需用到三个文件.目录如下: frontend ├─ config │ └ main.php ├─ controllers │ └ BookController.php └─ models └ Book.php 二.配置URL规则

Yii2框架实现计数器功能

思路: 因为yii2框架没有像tp框架那样的setinc这样的累加函数,所以只能在每次累加之前查出当前的这个字段的值,然后写算法累加入库 例如:

tp和yii2 框架的区别:

tp和yii2 框架的区别: yii框架,美国华人开发的框架, 薛强,纯OOP框架

关于yii2框架活动记录activeRecord添加默认字段的问题

平时使用sql的时候可以如下添加默认字段flag: "select a.*,0 as flag from user_info a", 对于yii2框架则需要这样: $query =(new \yii\db\Query()) ->select([ 'r.real_name', new Expression("'身份证' id_no_type") ]) ->from(['r' => $this->tableName()])

YII2框架的安装

之前yii是直接下载的,给cookieValidationKey的值既可以用了,就没在意在线安装的形式.后来发现有些扩展什么的安装配置不好弄. 所以官网推荐composer来安装,只需执行一条简单的命令就可以安装新的扩展或更新 Yii 了. 在网上看了很多人都倒在了这个安装上面,但是安装貌似也不难.总是些菜鸟在上面自己提问题自己回答的,问百度被误导了好多次,哎. 1.下载安装composer 一般人做项目还是在windows操作系统上,所以记录的是windows版本的安装. 条件1:电脑上有ph