本系列目錄
一、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框架中使用命令行創建出自己的模塊,並且可以進行訪問。
這點內容也是折騰了咔咔近倆個小時,再用點時間爭取把這個框架給弄明白。
“堅持學習、堅持寫作、堅持分享是咔咔從業以來一直所秉持的信念。希望在偌大互聯網中咔咔的文章能帶給你一絲絲幫助。我是咔咔,下期見。
”