Yii2 HelloWord
一、安装Yii2
可以直接官网或github下载:
https://github.com/yiisoft/yii2
下载完后进入项目的web/目录,入口文件为该目录下的index.php,这里直接启用PHP的内置服务器(端口自定义)真,在当前目录下打开终端输入:
php -S localhost:8090
正常情况下就可以在浏览器中访问了。
默认的情况下,我们看到的Yii2首页是/controllers/SiteController.php下的Index方法
public function actionIndex()
{
return $this->render('index');
}
上面的Index方法渲染了index这个模版,而这个模板位于/views/site/index.php,至于控制器和视图之间的命名规则,参考这里:
views/ControllerID/ViewName.php
ControllerID: 表示控制器的ID,也就是控制器去掉Controller的前缀,比如SiteController就对应siteViewName: 是对应方法的名字,但是不包括action字眼,比如actionIndex对应的是index.php
而在使用render方法来渲染视图的时候,Yii2默认地也会渲染载入/views/layouts/main.php这个文件,而这个文件做的事就是载入一些html头部的共用文件,比如js,css,导航栏和底部繁荣导航栏等。这里其实我们最值得关心的其实就是下面这段代码的<?= $content ?>:
<?= Breadcrumbs::widget([
'links' => isset($this->params['breadcrumbs']) ? $this->params['breadcrumbs'] : [],
]) ?>
<?= $content ?>
</div>
这个<?= $content ?>可以说就是我们之后定义视图的内容,我们后续创建的视图文件会被读成字符串的形式赋给$content,然后进行渲染显示。
二、Hello Word
有了上面的安装和基本知识之后,我们就可以自己动手来创建一个页面了。不过在创建页面之前,我们先来做一点简单的配置:开启Yii2的enablePrettyUrl模式,因为这样对于后续的开发会便捷很多,而且开启之后,我们的url也会变得很简洁又好,不想现在这样:
http://localhost:8090/index.php?r=site%2Fabout
这是我点击首页导航栏的About出现的url,一看到这个,我是拒绝的,所以来到/config/web.php这个配置文件中,找到'components' => []这个数组,加入下面的两行代码:
'urlManager' => [
'showScriptName' => false,
'enablePrettyUrl' => true
],
这样开启enablePrettyUrl模式之后,我们就可以通过http://localhost:8999/site/about来访问我们的About页面了,这里的规律是这样的:
http://localhost:8090/ControllerID/ActionName
比如,我们在/controllers/SiteController.php创建一个Say操作方法:
public function actionSay($target = 'World')
{
return $this->render('say', ['target' => $target]);
}
我们要访问这个方法的正确路径就是http://localhost:8090/site/say 。
在Yii中使用action关键字前缀来区分用于url操作方法和其他方法,这里的actionSay接收一个参数$target,如果用户在访问的时候传入target参数,target就为用户传入的值,而如果用户没有传入,我们将其默认值设为World。有了控制器的方法,从$this->render('say', ['target' => $target])这行代码来看,我们需要需要创建一个say.php模板文件,这个文件是在哪里的呢?
根据前面说的视图模板规则,它应该位于:/views/site/say.php。在里面简单写上下面这一小段代码:
<?php
use yii\helpers\Html;
?>
<h1>Hello <?= Html::encode($target) ?></h1>
<p>Welcome to your Yii2 demonstration application.</p>
出于安全的因素考虑,我们在say.php这个模版文件中使用了yii\helpers\Html类来对用户传入的数据进行过滤,所以我们才有了这样的输出:
<?= Html::encode($target) ?>
Yii2 HelloWord的更多相关文章
- Yii2的深入学习--行为Behavior
我们先来看下行为在 Yii2 中的使用,如下内容摘自 Yii2中文文档 行为是 [[yii\base\Behavior]] 或其子类的实例.行为,也称为 mixins,可以无须改变类继承关系即可增强一 ...
- 网站实现微信登录之回调函数中登录逻辑的处理--基于yii2开发的描述
上一篇文章网站实现微信登录之嵌入二维码中描述了如何在自己的登录页面内嵌入登录二维码,今天的这篇文章主要是描述下在扫码成功之后微信重定向回网站后登录逻辑的处理,其实也就是验证身份信息,授权用户登录的逻辑 ...
- 网站实现微信登录之嵌入二维码——基于yii2开发的描述
之前写了一篇yii2获取登录前的页面url地址的文章,然后发现自己对于网站实现微信扫码登录功能的实现不是很熟悉,所以,我会写2-3篇的文章来描述下一个站点如何实现微信扫码登录的功能,来复习下微信扫码登 ...
- yii2获取登录前的页面url地址--电脑和微信浏览器上的实现以及yii2相关源码的学习
对于一个有登录限制(权限限制)的网站,用户输入身份验证信息以后,验证成功后跳转到登录前的页面是一项很人性化的功能.那么获取登录前的页面地址就很关键,今天在做一个yii2项目的登录调试时发现了一些很有意 ...
- 记一次nginx部署yii2项目时502 bad gateway错误的排查
周六闲来无事,就试着安装和部署下yii2,安装过程没什么问题,但部署到nginx上时遇到了502 bad gatewary问题,折腾了半天才搞定.这个问题是我以前在部署yii2时没有遇到过的,因此记在 ...
- yii2的权限管理系统RBAC简单介绍
这里有几个概念 权限: 指用户是否可以执行哪些操作,如:编辑.发布.查看回帖 角色 比如:VIP用户组, 高级会员组,中级会员组,初级会员组 VIP用户组:发帖.回帖.删帖.浏览权限 高级会员组:发帖 ...
- yii2 RESTful api的详细使用
作者:白狼 出处:http://www.manks.top/yii2-restful-api.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则 ...
- yii2 ActiveRecord多表关联以及多表关联搜索的实现
作者:白狼 出处:http://www.manks.top/yii2_many_ar_relation_search.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明 ...
- yii2权限控制rbac之rule详细讲解
作者:白狼 出处:http://www.manks.top/yii2_rbac_rule.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留 ...
随机推荐
- Python命名空间和作用域
准备知识: 1.在Python解释器开始执行之后,机会在内存中开辟一个空间,每当遇到 一个变量的时候,就把变量和值之间的关系记录下来,但是当遇到函数定义 的时候,解释器只是把函数名读入内存,表示这个函 ...
- .Net Core 做请求监控NLog
使用 NLog 给 Asp.Net Core 做请求监控 https://www.cnblogs.com/cheesebar/p/9078207.html 为了减少由于单个请求挂掉而拖垮整站的情况发生 ...
- 洪水 Pow
Description AKD市处在一个四面环山的谷地里.最近一场大暴雨引发了洪水,AKD市全被水淹没了.Blue Mary,AKD市的市长,召集了他的所有顾问(包括你)参加一个紧急会议.经过细致的商 ...
- [转]Todd.log - a place to keep my thoughts on programming 分布式架构中的幂等性
Todd.log - a place to keep my thoughts on programming 理解HTTP幂等性 基于HTTP协议的Web API是时下最为流行的一种分布式服务提供方式. ...
- AJPFX总结Java 类加载器
顾名思义,类加载器(class loader)用来加载 Java 类到 Java 虚拟机中.一般来说,Java 虚拟机使用 Java 类的方式如下:Java 源程序(.java 文件)在经过 Java ...
- Java基础:(七)反射
一.什么是反射 理解反射之前,先要搞懂一件事情,类加载到底是怎么一回事? 类加载相当于Class对象的加载.每个类都有一个Class对象,包含了与类有关的信息.当编译一个新类时,会产生一个同名的.cl ...
- Echarts的重点
官网中,主要看文档的”教程“和”配置项手册“这两部分 1 下载 引入js 页面放一个容器,一定要设宽高 创建对象:var myChart = echarts.init(document.getElem ...
- mui对话框、表单
1.mui.alert() 普通提醒参数 1.message Type: String 提示对话框上显示的内容 2.title Type: String 提示对话框上显示的标题 3.btnValue ...
- 关于IT公司招聘的一个思考
作者:朱金灿 来源:http://blog.csdn.net/clever101 21世纪什么最贵?人才!相信这是很多IT公司管理者的深刻感悟.对于IT公司而言,找到合适的人才往往不能单靠人事部门,一 ...
- Autoit3 如何捕足控件
以任务管理器为例,在命令行提示符下输入taskmgr.exe 接下来识别这个窗口上的控件 在AU3 中提供了一个捕捉控件的工具是Au3Info.exe 这里记录了控件的标题,控件的类型,控件的坐标和 ...