Phalcon如何创建多模块并能进行访问 《Phalcon入坑指南系列 四》
本系列目录
一、Phalcon在Windows上安装 《Phalcon入坑指南系列 一》
二、Phalcon入坑必须知道的功能《Phalcon入坑指南系列 二》
三、Phalcon如何切换数据库《Phalcon入坑指南系列 三》
前言

使用Phalcon框架大多数都是为了其多模块功能来的,今天来聊聊Phalcon多模块如何使用。
依然是一步一个坑,使用这个框架就是痛并快乐着,一边承受坑带来的痛苦,一边享受解决坑的快乐。
一、创建一个多模块应用
使用命令先来创建出一个多模块的项目phalcon create-project kakaModules modules

可以看到生成的项目只有一个默认的frontend模块。
在frontend模块的index控制器中先来试试访问先,看多模块是如何访问的。

跟咔咔想的结果是如出一辙,就是默认进的这个模块的index方法。
先按照常理出牌,按照正常方式看是否会正常访问
在app/modules/frontend/controllers/IndexController.php这个文件里边创建一个kaka方法

进行访问测试

看来Phalcon还是迎合大众的胃口的。
二、注意:当你多模块无法访问怎么办
还记得在第一期文章中将单模块创建好了之后对Nginx修改了一次配置。
这个也是官方给提供的配置,按理说如果配置好了,后边就是再创建多模块也不会影响什么。
咔咔就是走了不寻常之路,重新配置了一个虚拟域名,但没有修改Nginx配置,所以一直提示无法访问。
如果你也出现了如下界面,则看看自己是否配置了Nginx

可以看到跟上文的访问路径是一致的,就会出现这样的情况。一定要看看是否配置了Nginx。
下图是咔咔的配置,如有需要可以直接复制拿过去使用。

最重要的也就只有一行配置
try_files $uri $uri/ /index.php?_url=$uri&$args;
三、如何创建属于自己的一个模块
使用命令来创建一个属于自己的模块phalcon module --name kaka --namespace=kaka --output=app/modules

创建出来的kaka模块,你可以看到在controller中是没有文件的,那么这个文件是否可以用命令来进行创建呢?
那肯定是可以的喽!phalcon controller --name index --output=app/modules/kaka/controllers

文件到手天下我有,先来访问一波看是否可以。

这可是真无情,但也无妨。根据报错信息可得知KakaModules\Modules\Frontend\Controllers\KakaController handler class cannot be loaded访问路径莫名其妙进入到了系统默认的frontend模块。
先不管这个错误是怎么发生的,先来看看创建出的文件是不是有问题,非常明显的一个问题就是没有命名空间。
先给控制器加上命名空间先。

此时还需要十分注意的是module这个文件,此文件是非常重要的,同样也要添加对应的命名空间。

这一切做完之后再回来看这个问题。

接下来的处理方式非常重要,也是当发现一个问题时应该如果应对的方式。
当看到这个问题时,一定要反应出来的第一个点就是为什么别的模块也进入到了系统的默认模块。
那么你就需要反应到是系统肯定在哪里设置一个默认访问模块。
在单模块时我们知道了在server文件中加了非常多重要的信息,接下来看看。

果不其然在这个文件中找到了设置了默认的访问模块。
当把这个配置取消之后发现又出现了另一个错误。

给出的信息就是找不到view这服务。
这个问题估计很多小伙伴就对这个错误无休无止的进行试错了,这个问题直接给大家解决方案。
试想一下,多模块肯定是要进行注册的,否则根本就无法对应的,这个操作当然也不是命令行直接生成好的,从创建控制器就可以得知,命令行生成文件还是需要进行简单处理一下才能直接使用的。
咔咔最终是在这个文件中找到了注册模块的位置,然后加上我们自己的模块即可。

此时再来进行访问,依然没有成功,还是报错。

真是一步一个坎呐!此时给出的错误又是这个模型没有在容器中。
说实话这个框架的便利之处还没发现,反正就是一步一步坑。
直接在loader文件中加上下图代码即可。

此时再进行访问。

真的是很不容易啊!经历了一步一步的摸索终于将多模块打通了。
四、创建了一个多模块后都应该做那些操作
第三节是咔咔一边分析一边修改代码,直至最后成功的结果。
为了大家可以直接看到操作流程,重新开了一个目录给大家方便查阅。
phalcon module --name kaka --namespace=kaka --output=app/modules创建出一个kaka的模块phalcon controller --name index --output=app/modules/kaka/controllers给kaka模块创建一个index控制器修改控制器index和module的命名空间 在文件 app/bootstrap_web.php添加kaka模块server_web的默认模块中的默认目录可不用注释 在文件 app/config/loader.php中方法registerClasses进行添加模块信息。
以上就是创建一个自己的模块执行流程。
五、总结
本文主要讲解的是在Phalcon框架中使用命令行创建出自己的模块,并且可以进行访问。
这点内容也是折腾了咔咔近俩个小时,再用点时间争取把这个框架给弄明白。
“
坚持学习、坚持写作、坚持分享是咔咔从业以来一直所秉持的信念。希望在偌大互联网中咔咔的文章能带给你一丝丝帮助。我是咔咔,下期见。
”
Phalcon如何创建多模块并能进行访问 《Phalcon入坑指南系列 四》的更多相关文章
- Phalcon多模块如何实现连接不同数据库 《Phalcon入坑指南系列 五》
本系列目录 一.Phalcon在Windows上安装 <Phalcon入坑指南系列 一> 二.Phalcon入坑必须知道的功能<Phalcon入坑指南系列 二> 三.Phalc ...
- Phalcon如何切换数据库《Phalcon入坑指南系列 三》
本系列目录 一.Phalcon在Windows上安装 <Phalcon入坑指南系列 一> 二.Phalcon入坑必须知道的功能(项目配置.控制器.模型.增.删.改.查) 三.Phalcon ...
- Angular 从入坑到挖坑 - 模块简介
一.Overview Angular 入坑记录的笔记第七篇,介绍 Angular 中的模块的相关概念,了解相关的使用场景,以及知晓如何通过特性模块来组织我们的 Angular 应用 对应官方文档地址: ...
- eclipse创建maven模块工程
创建maven模块项目,可以使用eclipse工具来完成. 1.创建父工程,注意,要选择maven-archetype-site-simple new --> maven project 填写项 ...
- eclipse创建多模块maven工程小结
创建maven工程步骤 1 新建一个maven工程,如下图所示: 2 选择项目名称(或项目目录),如下图所示: 3 填写maven工程相关信息,注意父maven工程的packing方式是pom,如下图 ...
- YII 创建后台模块
1,在protected/config/main.php目录下修改如下目录 'modules'=>array( // uncomment the following to enable the ...
- Maven手动创建多模块项目
Maven手动创建多模块项目 我要创建的项目名称是:unicorn,项目包含两个模块,分别是unicorn-core和unicorn-web.包的路径是com.goldpalm.tour. 项目创建流 ...
- python 中如何导入一个自己创建的模块
导入模块的语句的三种方法: 1.import module 2.from module import name1,[name2,name3....] 3.from module import * 先看 ...
- idea 创建多模块依赖Maven项目
本来网上的教程还算多,但是本着自己有的才是自己的原则,还是自己写一份的好,虽然可能自己也不会真的用得着. 1. 创建一个新maven项目 2. 3. 输入groupid和artifactid,后面步骤 ...
随机推荐
- 【C++】 四种强制类型转换(static_cast 与 dynamic_cast 的区别!)
强制类型转换 1. static_cast 2. dynamic_cast 3. const_cast 4. reinterpret_cast 5. 为什么要需要四种类型转换? 1. static_c ...
- .net core api 对于FromBody的参数验证
前言 在framework的mvc中,经常会使用 Model.State . ModelState.IsValid 配合着特性进行参数验证,通过这种方式可以降低controller的复杂度,使用方便. ...
- qt 中的对象树
本节内容讲解了什么是对象树以及其所带来的 GUI 编程好处.最后说明了在对象树中析构顺序问题并举了个特殊的例子,来说明平时编程中需要注意的一个点. 什么是对象树? 我们常常听到 QObject 会用对 ...
- Spring 钩子之BeanFactoryPostProcessor和BeanPostProcessor的源码学习,FactoryBean
BeanFactoryPostProcessor 是用于增强BeanFactory的(例如可以增强beanDefination), BeanPostProcessor是用于增强bean的,而Facto ...
- 设计模式<一>
设计原则1.找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起. 2.针对接口编程,而不是针对实现编程. 3.多用组合,少用继承. 一:策略模式,定义了算法族,分别封装起来 ...
- Flink的CheckPoint
Checkpoint checkpoint是Flink容错的核心机制.它可以定期的将各个Operator处理的数据进行快照存储(Snapshot). 如果Flink程序出现宕机,可以重新从这些快照中恢 ...
- 【Google Cloud技术咨询】「Contact Center AI」引领我们走向高度智能客服的时代
前提背景 我们距离"不再智障"的智能客服还有多远?对于智能客服,用户一直都是"批评多于褒奖",究其原因是在于人们对于AI客服的期待很高,而AI客服在实际应用中的 ...
- win系统打不开CHM文件(例如JDK的API)
打开文件乱码,打开时弹出乱码 前提说明,存放路径不得有中文,文件名也不能有中文 检查下面三个文件: hh.exe文件放置电脑 C:\Windows目录下: hhctrl.ocx ,its ...
- 浅谈C#更改令牌ChangeToken
前言 在上篇文章浅谈C#取消令牌CancellationTokenSource一文中我们讲解了CancellationTokenSource,它的主要功能就是分发一个令牌,当我取消令牌我可以进行一些回 ...
- 根据短链生成二维码并上传七牛云(Java)
通过短链生成二维码并上传七牛云(Java) 前言 网上这种帖子其实也是很多,大部分搜出来的是CSDN的,然后点进去一看都几乎一样:所以这次给个自己实践的例子记录. 这次也是通过搜索得到的一部分能实现这 ...