本系列目录

一、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方法


测试kaka方法

进行访问测试


返回结果

看来Phalcon还是迎合大众的胃口的。

二、注意:当你多模块无法访问怎么办

还记得在第一期文章中将单模块创建好了之后对Nginx修改了一次配置。

这个也是官方给提供的配置,按理说如果配置好了,后边就是再创建多模块也不会影响什么。

咔咔就是走了不寻常之路,重新配置了一个虚拟域名,但没有修改Nginx配置,所以一直提示无法访问。

如果你也出现了如下界面,则看看自己是否配置了Nginx


访问报错

可以看到跟上文的访问路径是一致的,就会出现这样的情况。一定要看看是否配置了Nginx。

下图是咔咔的配置,如有需要可以直接复制拿过去使用。


nginx配置

最重要的也就只有一行配置

 try_files $uri $uri/ /index.php?_url=$uri&$args;

三、如何创建属于自己的一个模块

使用命令来创建一个属于自己的模块phalcon module --name kaka --namespace=kaka --output=app/modules


创建kaka模块

创建出来的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入坑指南系列 四》的更多相关文章

  1. Phalcon多模块如何实现连接不同数据库 《Phalcon入坑指南系列 五》

    本系列目录 一.Phalcon在Windows上安装 <Phalcon入坑指南系列 一> 二.Phalcon入坑必须知道的功能<Phalcon入坑指南系列 二> 三.Phalc ...

  2. Phalcon如何切换数据库《Phalcon入坑指南系列 三》

    本系列目录 一.Phalcon在Windows上安装 <Phalcon入坑指南系列 一> 二.Phalcon入坑必须知道的功能(项目配置.控制器.模型.增.删.改.查) 三.Phalcon ...

  3. Angular 从入坑到挖坑 - 模块简介

    一.Overview Angular 入坑记录的笔记第七篇,介绍 Angular 中的模块的相关概念,了解相关的使用场景,以及知晓如何通过特性模块来组织我们的 Angular 应用 对应官方文档地址: ...

  4. eclipse创建maven模块工程

    创建maven模块项目,可以使用eclipse工具来完成. 1.创建父工程,注意,要选择maven-archetype-site-simple new --> maven project 填写项 ...

  5. eclipse创建多模块maven工程小结

    创建maven工程步骤 1 新建一个maven工程,如下图所示: 2 选择项目名称(或项目目录),如下图所示: 3 填写maven工程相关信息,注意父maven工程的packing方式是pom,如下图 ...

  6. YII 创建后台模块

    1,在protected/config/main.php目录下修改如下目录 'modules'=>array( // uncomment the following to enable the ...

  7. Maven手动创建多模块项目

    Maven手动创建多模块项目 我要创建的项目名称是:unicorn,项目包含两个模块,分别是unicorn-core和unicorn-web.包的路径是com.goldpalm.tour. 项目创建流 ...

  8. python 中如何导入一个自己创建的模块

    导入模块的语句的三种方法: 1.import module 2.from module import name1,[name2,name3....] 3.from module import * 先看 ...

  9. idea 创建多模块依赖Maven项目

    本来网上的教程还算多,但是本着自己有的才是自己的原则,还是自己写一份的好,虽然可能自己也不会真的用得着. 1. 创建一个新maven项目 2. 3. 输入groupid和artifactid,后面步骤 ...

随机推荐

  1. 【java se】java注解

    目录: 1.注解概述 2.常见的 Annotation 示例 3.自定义 Annotation 4.JDK 中的元注解 5.利用 反射获取注解信息(在反射部分 涉及) 6.JDK 8 中注解的新特性 ...

  2. 【springcloud】常见面试题总结

    1.springcloud与dubbo的区别? https://jingyan.baidu.com/article/b0b63dbf3784294a483070fa.html 1.1 springcl ...

  3. SpringMVC之@ControllerAdvice

    @ControllerAdvice ,很多初学者可能都没有听说过这个注解,实际上,这是一个非常有用的注解,顾名思义,这是一个增强的 Controller.使用这个 Controller ,可以实现三个 ...

  4. LeetCoded第242题题解--java--数组

    数组 数组的优点在于: 构建非常简单 能在 O(1) 的时间里根据数组的下标(index)查询某个元素(连续内存+对象指向数组下标0位置+index能够直接找到元素) 而数组的缺点在于: 构建时必须分 ...

  5. java 搞笑注释

    // _ooOoo_ // o8888888o // 88" . "88 // (| -_- |) // O\ = /O // ____/`---'\____ // . ' \\| ...

  6. TiDB基本简介

    一.TiDB整体架构 与传统的单机数据库相比,TiDB具有以下优势: 纯分布式架构,拥有良好的扩展性,支持弹性的扩缩容 支持SQL,对外暴露MySQL的网络协议,并兼容大多数MySQL的语法,在大多数 ...

  7. 刷题-力扣-518. 零钱兑换 II

    518. 零钱兑换 II 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/coin-change-2/ 著作权归领扣网络所有.商业转载 ...

  8. 【Azure 应用服务】使用PowerShell脚本上传文件至App Service目录  

    问题描述 使用PowerShell脚本上传文件至App Service目录的示例 脚本示例 对文件进行上传,使用的 WebClient.UploadFile 方法进行上传.当文件夹中包含子目录,执行以 ...

  9. SpEL表达式注入漏洞学习和回显poc研究

    目录 前言 环境 基础学习和回显实验 语法基础 回显实验 BufferedReader Scanner SpEL漏洞复现 低版本SpringBoot中IllegalStateException CVE ...

  10. rest operater剩余操作符

    rest叫做剩余操作符(rest operator),是解构的一种,意思就是把剩余的东西放到一个array里面赋值给它.一般只针对array的解构 //rest叫做剩余操作符(rest operato ...