文档章节

window环境 YII2.0入门篇(二)

xinson
 xinson
发布于 2015/02/06 12:38
字数 890
阅读 29
收藏 0
点赞 0
评论 0

修改网站根目录为web

应用结构

basic/                  应用根目录
    composer.json       Composer 配置文件, 描述包信息
    config/             包含应用配置及其它配置
        console.php     控制台应用配置信息
        web.php         Web 应用配置信息
    commands/           包含控制台命令类
    controllers/        包含控制器类
    models/             包含模型类
    runtime/            包含 Yii 在运行时生成的文件,例如日志和缓存文件
    vendor/             包含已经安装的 Composer 包,包括 Yii 框架自身
    views/              包含视图文件
    web/                Web 应用根目录,包含 Web 入口文件
        assets/         包含 Yii 发布的资源文件(javascript 和 css)
        index.php       应用入口文件
    yii                 Yii 控制台命令执行脚本

关于  命名空间说明 http://my.oschina.net/xinson/blog/376027

say hello

创建控制器 

controllers/SiteController
<?php
namespace app\controllers;//命名空间
use yii\web\Controller;//使用命名空间  它是SiteController继承的Controller

class SiteController extends Controller{
    public function actionSay($message = 'Hello')
    {
        return $this->render('say', ['message' => $message]);
    }
}

创建视图

views/site/say.php
<?php
use yii\helpers\Html;
?>
<?= Html::encode($message) ?>

http://test.yii.com/index.php?r=site/say&message=Hello+World


新页面和其它页面使用同样的头部和尾部是因为 [[yii\web\Controller::render()|render()]] 方法会自动把 say 视图执行的结果嵌入称为布局的文件中,本例中是 views/layouts/main.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'],
        ];
    }
}

EntryForm 类包含 name 和 email 两个公共成员,用来储存用户输入的数据。它还包含一个名为 rules() 的方法,用来返回数据验证规则的集合。

name 和 email 值都是必须的 

email 的值必须满足email规则验证

site 控制器中创建一个 entry 操作

<?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]);
        }
    }
}


创建视图

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>
views/site/entry.php
<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
?>
<?php $form = ActiveForm::begin(); ?>
<?= $form->field($model, 'name') ?>//$form->field($model, 'name')->label('自定义 Name')
<?= $form->field($model, 'email') ?>//$form->field($model, 'email')->label('自定义 Name')
<div class="form-group">
     <?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?>
</div>
<?php ActiveForm::end(); ?>

begin() 和 end() 分别用来渲染表单的开始和关闭标签。在这两个方法之间使用了 [[yii\widgets\ActiveForm::field()|field()]] 方法去创建输入框。第一个输入框用于 “name”,第二个输入框用于 “email”。之后使用 [[yii\helpers\Html::submitButton()]] 方法生成提交按钮。

http://test.yii.com/index.php?r=site/entry

输入有效的 name 和 email 信息并提交后,将会看到一个显示你所提交数据的确认页面。


其实数据首先由客户端 JavaScript 脚本验证,然后才会提交给服务器通过 PHP 验证。[[yii\widgets\ActiveForm]] 足够智能到把你在 EntryForm 模型中声明的验证规则转化成客户端 JavaScript 脚本去执行验证。如果用户浏览器禁用了 JavaScript, 服务器端仍然会像 actionEntry() 方法里这样验证一遍数据。这保证了任何情况下用户提交的数据都是有效的。

© 著作权归作者所有

共有 人打赏支持
xinson
粉丝 15
博文 132
码字总数 29814
作品 0
广州
程序员
window环境 YII2.0入门篇(一)

安装composer http://my.oschina.net/xinson/blog/355184 如果你已经安装有 Composer 请确保使用的是最新版本,你在CMD可以用 命令更新 Composer 为最新版本。 Composer 安装后,切换到一个可...

xinson ⋅ 2014/12/12 ⋅ 0

Yii框架学习入门(1)--YII的MVC概念及逻辑解析

1、这里是win10安装的是Yii2.0,中文社区:http://www.yiichina.com/ 。 2、先了解安装方法: 服务器用的是wamp,将Yii2.0高级版解压文件放入www目录,将php加入全局命令(右击【计算机】-【...

wx599c47c7bdcad ⋅ 06/03 ⋅ 0

yii2.0中隐藏或移除Basic/Web(不修改Apache配置httpd.conf)

译自http://fellowtuts.com/yii/hide-or-remove-basicweb-from-url-in-yii-2-0/ yii是一个非常好的框架,它会自动的做许多事情。我们知道,默认的yii安装会使网站通过类似这样的URL“http://...

木木在路上 ⋅ 2015/05/12 ⋅ 0

【OpenCV入门指南】第一篇 安装OpenCV

【OpenCV第一篇】安装OpenCV 本篇主要介绍如何下载OpenCV安装程序,如何在VS2008下安装配置OpenCV,文章最后还介绍了一个使用OpenCV的简单小例子。 《OpenCV入门指南》系列文章地址:http://...

长平狐 ⋅ 2012/12/10 ⋅ 0

【OpenCV入门指南】第七篇 线段检测与圆检测

【OpenCV入门指南】第七篇 线段检测与圆检测 在《【OpenCV入门指南】第五篇轮廓检测上》与《【OpenCV入门指南】第六篇轮廓检测下》讲解了OpenCV的轮廓检测。本篇将讲解在OpenCV中使用线段检测...

andyhe91 ⋅ 2014/12/17 ⋅ 0

Spring Boot揭秘与实战

Spring Boot 揭秘与实战(九) 应用监控篇 - HTTP 应用监控 Spring Boot 提供运行时的应用监控和管理功能。本文,我们通过 HTTP 实现对应用的监控和管理。 博客地址:http://blog.720ui.com...

掘金官方 ⋅ 2017/12/11 ⋅ 0

[翻译]使用tmux打造极简开发环境

原文地址:https://blog.bugsnag.com/benefits-of-using-tmux/ 在我使用tmux之前我经常听别人提起它。当时网上并没有太多关于tmux的信息,所以虽然这个工具听起来很酷,但我并不知道它将如何...

EchoZhou ⋅ 2017/04/24 ⋅ 0

要点提炼|开发艺术之四大组件

提到四大组件大家肯定再熟悉不过了,本篇侧重于对四大组件工作过程的分析: 概述 工作过程 Activity Service BroadcastReceiver ContentProvider 1.概述 a.Activity 类型:展示型组件。 作用...

minmin_1123 ⋅ 2017/12/27 ⋅ 0

Python入门(一)——环境的搭建,创建第一个Python项目:Hello World

Python入门(一)——环境的搭建,创建第一个Python项目:Hello World 一.安装环境 安装就很简单了,我们进入官网Python,然后下载对应的版本就好了 如果你是Liunx的话,可以直接运行python 关于...

刘桂林 ⋅ 2017/04/25 ⋅ 0

【OpenCV入门指南】第三篇Canny边缘检测

【OpenCV入门指南】第三篇Canny边缘检测 图像的边缘检测的原理是检测出图像中所有灰度值变化较大的点,而且这些点连接起来就构成了若干线条,这些线条就可以称为图像的边缘。 Canny边缘检测算...

长平狐 ⋅ 2012/12/10 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

知乎Java数据结构

作者:匿名用户 链接:https://www.zhihu.com/question/35947829/answer/66113038 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 感觉知乎上嘲讽题主简...

颖伙虫 ⋅ 今天 ⋅ 0

Confluence 6 恢复一个站点有关使用站点导出为备份的说明

推荐使用生产备份策略。我们推荐你针对你的生产环境中使用的 Confluence 参考 Production Backup Strategy 页面中的内容进行备份和恢复(这个需要你备份你的数据库和 home 目录)。XML 导出备...

honeymose ⋅ 今天 ⋅ 0

JavaScript零基础入门——(九)JavaScript的函数

JavaScript零基础入门——(九)JavaScript的函数 欢迎回到我们的JavaScript零基础入门,上一节课我们了解了有关JS中数组的相关知识点,不知道大家有没有自己去敲一敲,消化一下?这一节课,...

JandenMa ⋅ 今天 ⋅ 0

火狐浏览器各版本下载及插件httprequest

各版本下载地址:http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/ httprequest插件截至57版本可用

xiaoge2016 ⋅ 今天 ⋅ 0

Docker系列教程28-实战:使用Docker Compose运行ELK

原文:http://www.itmuch.com/docker/28-docker-compose-in-action-elk/,转载请说明出处。 ElasticSearch【存储】 Logtash【日志聚合器】 Kibana【界面】 答案: version: '2'services: ...

周立_ITMuch ⋅ 今天 ⋅ 0

使用快嘉sdkg极速搭建接口模拟系统

在具体项目研发过程中,一旦前后端双方约定好接口,前端和app同事就会希望后台同事可以尽快提供可供对接的接口方便调试,而对后台同事来说定好接口还仅是个开始、设计流程,实现业务逻辑,编...

fastjrun ⋅ 今天 ⋅ 0

PXE/KickStart 无人值守安装

导言 作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装。 常规的办法有什么? 光盘安装系统 ===> 一...

kangvcar ⋅ 昨天 ⋅ 0

使用Puppeteer撸一个爬虫

Puppeteer是什么 puppeteer是谷歌chrome团队官方开发的一个无界面(Headless)chrome工具。Chrome Headless将成为web应用自动化测试的行业标杆。所以我们很有必要来了解一下它。所谓的无头浏...

小草先森 ⋅ 昨天 ⋅ 0

Java Done Right

* 表示难度较大或理论性较强。 ** 表示难度更大或理论性更强。 【Java语言本身】 基础语法,面向对象,顺序编程,并发编程,网络编程,泛型,注解,lambda(Java8),module(Java9),var(...

风华神使 ⋅ 昨天 ⋅ 0

Linux系统日志

linux 系统日志 /var/log/messages /etc/logrotate.conf 日志切割配置文件 https://my.oschina.net/u/2000675/blog/908189 logrotate 使用详解 dmesg 命令 /var/log/dmesg 日志 last命令,调......

Linux学习笔记 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部