类似的url,这样是符合restful。 为了以后版本化,将每个版本的接口以模块的形式建立,当然建立支持restful和建立普通的模块并没有差别,使用gii的模块生成即可。...urlManager 如果要实现上面的url样子,我们必须进行url美化,这需要web服务器的支持(apache&nginx如何支持url重写可以参考 速查表),单单这样还不够,yii2提供了restful...在pluralize=false的情况下url是类似于 GET xgh.nai8.me/xcx/album 的样子。...album控制器的actionIndex,以此类推yii2提供了很多个内置的action识别,具体见下图 alt 当然具体如何实现的你可以参考 yii\rest\UrlRule.php 类及yii2的...是的,这是一个继承问题,如果你想让yii2支持restful,请将对应控制器继承到 yii\rest\ActiveController 上,最简单的一个具有restful资源操作能力的控制器如下图。
基础总结 1.修改默认控制器/方法 yii默认是site控制器,可以在web.php中设置$config中的'defaultRoute'='xxxx';使用自定义默认的控制器。...yii的默认方法是index,可以在vender/yiisoft/yii2/base/Controller.php 中进行初始设置,也可以在控制器中改写defaltAction='action'。...文件,而且其内部的实现也多采用yii内置小部件的形式,如<?...场景设置 yii中有对场景的定义,定义场景可以使得yii在不同的情况下返回不同的数据信息。用model的scenarios()方法来设置返回数据。...2.初始化变量 想在控制器中每一个操作前,初始化一个变量的话不要重写__construct构造函数,因为它需要传入各种变量。
yii2在使用的时候,访问控制器的时候,如果控制器的名称是驼峰命名法,那访问的url中要改成横线的形式。...刚开始以为YII2中肯定有这样的设置,然后就去google了下,发现都说不行,自己去看了下,果然,框架里面直接是写死的:(源码)\vendor\yiisoft\yii2\base\Controller.php...由于我们的项目用的事yii2的advanced版本,并且里面有多个项目,还要保证其他项目使用正常(也就是个别的控制器才需要使用驼峰命名的方式访问),这也容易: 我们可以写个components处理:\common...ok ,这就可以支持使用驼峰形式访问了,当然这个的形式很多,也可以写成一个控制器,然后其它控制器继承这个控制器就行了,但是原理是一样的 如何使用? ...访问的时候url为www.test.com/getFullHotelInfo (adsbygoogle = window.adsbygoogle || []).push({});
Yii2 使用 RESTful?...这样,用户的数据就能通过美化的 URL 和有意义的 http 动词进行访问和操作。 b): 上面是没有加上版本的url配置,至于关于版本我将以新的一篇来说明....这个特殊的URL规则类将会建立一整套子URL规则来支持路由和URL创建的指定的控制器。...users/123: 显示有关末端 /users/123 支持的动词 补充:Yii 将在末端使用的控制器的名称自动变为复数。...方法,并进行重写 public function actionIndex() { //获取用户所有信息 ...... } 对于其他的方法同上....
以 yii 2.0.14 高级版的 frontend 为例,从 frontend/web/index.php 开始 //引用 yii2 composer 的 autoload,调用 getLoader...,而不是单纯的父类构造函数 * 上级某一层的构造函数中如果调用了某个方法 * 并且这个方法被下层类重写过,那么会直接执行重写之后的方法 * 所以执行 Component::...__construct,__construct 中调用 init() * 会执行 yii\base\Application 的 init * 如果上级调用下级重写的 静态方法 时...,绑定事件的方法: * yii\base\Component 或者其子类::on("事件名称","方法") */ $this->trigger(self...配置如 * [ * 'controllerMap' => [ * // 用类名申明 "account" 控制器 * 'account
还有一点就是,Yii2还有官方的扩展(official extensions)来支持一些常见的模板引擎如:smarty,twig等。喜欢这些模版引擎的同学,你们有福气了。...在Views还有一个值得注意的地方就是this变量,在Yii1.1中,this可以说就是链接Controller和Views的中介;而在Yii2中, 控制器(Controllers) 首先直接来看一下代码...字符串,cool return 'test'; } } 这里你有没有看到use yii\web\Controller?...没错,Yii2中已充分开始使用PHP命名空间,当初在Yii1.1的时候一直听说Yii2会使用更高级的PHP特性来完全重写,果然啊,点个赞。...而且现在的Controller中,每个输出变为了返回,就像上面的actionTest()一样,你现在可以完全返回一个字符串了,有没有一丝丝Laravel的影子?
路由:指哪儿打哪儿 在没有接触到 Laravel 之前,早先的框架基本上都没有这个完整的路由的概念。像是 TP3 、Yii1 版本的时候,都是通过入口文件对参数的解析来加载指定的 控制器 。...Restful 风格的 URL 多个 URI 指向同一个控制器(可以在路由中区分参数) URI 和 控制器 解耦,自由定义名称,不受控制器里面方法名的限制 很多场景都不需要控制器,比如一个静态页面,直接路由里就可以搞定了...事物总是有两面性的,既然现在 TP5 、 Yii2 都已经在推荐这种显式路由的方式了,那么可以看出,大家在实际的工作中还是更接受显式路由的这些优点的。...如果是传统框架没有加任何判断的情况下,也是可以直接请求到控制器的,只是说我们从 _POST 中无法获取数据而已。...传统框架中的控制器就是路由,如果想要动态地改变这个路由链接,那么要么改控制器的名字,要么去 nginx 上配置转发重写,都远不如框架中自带路由来得方便快捷。
Composer 这个是做yii2开发的基石,除非没有办法使用,否则请不要放弃,除了更容易的安装yii2及第三方扩展外,能使用Composer代表着你的服务器最少能运行起来php-cli,那么你就可以使用...,别说你的程序将来没有移动端,早早的选择一个支持emoji的数据库会避免我们下载第三方库去解决报错问题。...模型的重要性 很多yii2的初学者喜欢将大量逻辑写到控制器的动作(action)中,这是不对的,我们的重点应该在模型中,而控制器仅仅是做输入输出。 我们拿关联举个例子,下面的这段代码是不好的。...当然从理念上说也有点不同 行为 一些类附加的属性 父类 一些类共同的属性 我的用法(不一定就是对的),尤其在模块中我喜欢为控制器增加一层父类。...,我之前写过一篇文章,你可以看下 《用yii2实现youtube风格的错误处理页面》 urlManager 严格来说这个应该在开发阶段做,为了对搜索引擎更有好,也为了增加程序的安全性,我们应该对url进行美化
1.首先把代码上传到linux配置的目录中(如:/www/你的站点目录(如: /www/wwwroot/my.com/)) 2.cd /www/你的站点目录( 如:/www/wwwroot/my.com.../init 选择生产环境(0:开发环境,1:生产环境) (进行项目初始化,会给项目相应的权限否则无法访问) 3.比如我的项目在 /www/wwwroot/my.com 配置前台项目(如: /www/wwwroot...关键部分来了,下面要配置相应的解析规则了 转换前 URL:http://www.xxx.com/product/view?...> //这是指匹配控制器内的方法 //这里指获取相应的请求参数的key \Yii::$app->request->get('pid'); 如果希望添加后缀.html 1 2...2.参数中的\d+代表匹配数字 如果你的想是字符串 那么请修改成\w+ 如果想修改成匹配固定的控制器或者方法,请参考下面配置 1 2 3 'rules' => [ '<controller
common/widgets 下即可 调用办法: 在backend/controllers中新建一个控制器Demo加入以下代码 public function actions(){ return [...yii2框架整合了百度编辑器,因为文件上传采用的是yii2自带的UploadedFile,这就难免umeditor上传不成功问题,解决问题的只需要两个操作步骤,我们来看看具体实现 创建一个 common...the validation rules. */ public function rules() { return [ [['file'], 'file'], ]; } } 需要在刚刚创建的那个控制器...; $info = [ "originalName" = $model- file- baseName, "name" = $model- file- baseName, "url...其中content是字段名称 关于图片上传的可以看下:https://www.zalou.cn/article/150018.htm 在YII2框架中使用UEditor编辑器发布文章的地址:https:
去掉用不到的视图文件 ? 生成成功会显示如下: ? 7. URL访问默认控制器 用crud组件common\gii\Crud来实现基础的action Crud里的index方法已经做好了分页处理。...index视图:backend/modules/test/views/default/index.php 如非必要,不要直接书写原生的SQL 用joinWidth方法来关联表,需要在Test类定义好表关联...控制器和视图中所用的字典类,获取数据的方法都应写到Model里。...可参考Yii2的yii\db\Query的 andFilterWhere等方法和操作符格式 andFilterWhere可放心使用,搜索时字段非空才会执行。...数据验证不通过时可以根据打印$model->getErrors()查看具体错误信息 对于表单提交过来的数据不是最终保存到数据库里的格式时,如时间戳等, 可以通过自定义rules或者重组表单数据来实现
> yii2框架自带的pjax,不需要额外的代码 pjax的一些配置 false]); ?...,Pjax会更新老旧内容以及向浏览记录中加入一条新的url而不需要更新刷新整个页面。...> 你也可以选择配置哪个链接和form表单使用Pjax,是否将新的Url添加到浏览记录,替换或者保持原样。如果Pjax没有响应,超时之后页面将会重新加载。...Yii2 Pjax Examples Refresh 本例是一个简单的点击超链接来实现刷新时间,通过Pjax widget实现异步刷新。这里有一个在线的示例:Demo <?...,整个页面刷新会跳转页面的问题 pjax中的局部刷新中,改变了地址栏中的url改变了,当整个页面刷新时,整个页面跳转了,有没有什么好的解决办法,求具体代码?
本文实例讲述了Yii2框架控制器、路由、Url生成操作。...URL生成 Url帮助类工作方式演示 use yii\helpers\Url; // 同一个控制器中的action echo Url::toRoute(['update','id'= '1']); /.../如果没有参数,可以传字符串,不需要数组 // 不同控制器的action(同一个module) echo Url::toRoute('post/index'); // 绝对路由(可以跳出当前module...echo Url::toRoute('user-info'); // 控制器中间有大写的情况,例如 DateTimeController中的actionUpdate方法 echo Url::toRoute...'http://www.baidu.com/') 在控制器中跳转 return $this- redirect(['site/index']); //内部调用 Url::to()生成Url,所以大多数情况下需要传入一个数组
过滤器 什么是过滤器 过滤器是控制器动作执行之前或之后需要执行的代码。该代码以对象的形式执行,则应该使用类的方式定义并申明。 过滤器本质上是一种特殊的行为。...为什么使用过滤器 通常情况下,过滤器将代码绑定到所有的操作上,也就是说,每一个操作的执行,都需要先或后执行过滤器,所以,可以用来执行权限检测、缓存处理等事情 在哪里使用过滤器 在控制器中,定义: public...控制器修改 控制器接收多个文件,应该使用UploadedFile 里的getInstances方法来绑定属性 ?...实现类中的各种属性都可以被认为是可配置的属性 如: public $width=120; 还可以设置: height: 高度 backColor: 背景色 foreColor 文字颜色...,在Yii2中,不需要自己去写验证,直接在表单模型的 rules 中调用 captcha 验证就可以了 ['verifyCode','captcha'], 数据分页 Yii2也提供了类似于TP的数据分页类
四、TP框架中的控制器 1、控制器的后缀 打开配置文件application/config.php,有如下配置 'controller_suffix' => false, 表示默认情况下,控制器无特殊后缀.../目录下 命名规则:控制器名称(首字母大写) + (控制器后缀,默认没有) + .php 默认:Index控制器 Index.php User控制器 User.php Test控制器 Test.php...TP中命名空间使用: ①声明命名空间 使用namespace关键字 ②引入指定的类 使用use关键字 命名空间\类名称 ③完全限定式访问 在使用类时,\完整命名空间\类名称(继承和实例化) 如果一个类没有命名空间...隐藏入口文件写法:http://域名/模块名/控制器名称/操作方法名称/参数名/参数值 需要对apache进行设置(手册–架构–URL访问、手册–部署–URL重写) ?...使用Apapche的重写机制隐藏入口文件后,如果在整个url后面加上.html后缀, 让整个url看起来像是访问的静态页面。这叫做“伪静态”。
做项目时总会碰到ajax提交的功能,特别是在做后台提交时,一般都会用模型自动生成,这个功能的使用会比较频繁,其实只要了解了流程,操作还是挺简单的,使用起来也方便。 表单部分 field($model,’company_name’, [‘inputOptions’ => [‘placeholder’=>’请输入商家名称’,’class‘ => ...> 其中:’enableAjaxValidation’ => true, 必须设置,告诉表单用ajax提交 控制器(controller)部分 控制器分两部分,一部分是效验表单的正确性,另外一部分是保存...has-error’).length) { return false; } //表单提交 $.ajax({ url...Yii2 adminlte框架后台,具体操作过程试项目而定,基本操作过程都一样。
哈喽,我是老鱼,一名致力于在技术道路上的终身学习者、实践者、分享者! Leadshop是一款免费商城系统,基于Yii2开发,支持composer,优化核心,减少依赖,基于全新的架构思想和命名空间。...前端技术栈为ES6、vue、vuex、vue-router、vue-cli、axios、element-ui、uni-app,后端技术栈有Yii2、Jwt、Mysql、Easy-SMS。...接口标准 灵活创建模型控制器,易于扩展开发 配置文件可分离,方便管理 重写的自动验证和完成 简化扩展机制,提升开发速度 API支持完善,方便二次开发 内置WeChat微信开发框架,微信接入更加快捷,简单...可视化DIY店铺装修,方便、快捷、直观,可以随心所欲装扮自己的店铺 高效的笛卡尔乘积运算,8000条规格秒加载 拟态Windows文件夹的素材管理结构,操作更熟悉随心 安装 下载源码到本地(或上传到服务器...然后输入http://localhost/install或者你的域名(如www.yourdomain.com/install),按照步骤进行安装。
windows下,如果本机还没有安装composer,我的做法是是直接下载composer.phar包 假定你的工作目录是 workspace,将下载的composer.phar放在workspace...yiisoft/yii2-app-basic basic 其中 命令最后的basic可以替换任意你想设定的应用名称,比如app,myapp等等 关于composer的安装使用请查阅相关资料 composer...官方地址 源码安装 源码包地址 yii2-beta 下载源码包解压后即yii2的框架源文件,然后根据自己的实际情况构建目录结构,进行开发 项目初始化完成以后,配置yii2的配置文件,配置文件一般放在...app/config目录下,当然这个路径会根据个人习惯而不同] 我个人推荐的yii2框架目录结构(使用composer 创建项目的默认目录结构和此不同) composer.json 定义项目中的...命令行工具(controller) config/ 应用程序配置 controllers/ web controller目录(控制器) views/
过滤器就是对不同用户角色的控制; 如(游客- 最普通的平民,用户- 已经注册的用户,管理员- 拥有一切权限) 然而 Yii2自带的权限控制默认只支持两个角色: guest(游客,没有登录的,用 ?...表示) authenticated (登录了的,用 @ 表示) 在这里我们需要实现的是对这两种不同的角色指定不同的访问权限,就是为他们分配不同的可以访问的控制器或者方法。...目前我们如果直接点击导航栏的Status,我们还是可以在没有登录的情况之下进行发表状态(status), 所以我们需要改一下我们的代码和逻辑,Yii2在这方面的控制做得非常好, 其实实现这个我们只需要修改一下...StatusController.php里面的behaviors()方法而已, 在这里面加入一段access设置: 控制器中的代码(1) public function behaviors(){ return...用户一旦登录进来之后,我们就可以通过下面这行代码来获取用户的id了: $userid=Yii::$app- user- getId(); //获取用户id 控制器中的案例(2) public function
一份菜单 - 解读composer.json的各项内容 本文为你介绍composer.json中的各项。 name * 包名,它包括供应商名称和项目名称,使用 / 分开,比如下面的样子。...比如我们开发的yii2扩展,它的类型就是 yii2-extension,而yii2程序提供了一个逻辑进行该包的处理。...email: 作者的 email 地址。 homepage: 作者主页的 URL 地址。 role: 该作者在此项目中担任的角色(例:开发人员 或 翻译)。...:PSR0里面最后一个\之后的类名中,如果有下划线,则会转换成路径分隔符,如Name_Space_Test会转换成Name\Space\Test.php。...默认情况下 composer 只使用 packagist 作为包的资源库。通过指定资源库,你可以从其他地方获取资源包。
领取专属 10元无门槛券
手把手带您无忧上云