天天看點

Phalcon如何建立多子產品并能進行通路 《Phalcon入坑指南系列 四》

​​本系列目錄​​

​​前言​​

​​一、建立一個多子產品應用​​

​​二、注意:當你多子產品無法通路怎麼辦​​

​​三、如何建立屬于自己的一個子產品​​

​​四、建立了一個多子產品後都應該做那些操作​​

​​五、總結​​

本系列目錄

一、phalcon在windows上安裝 《phalcon入坑指南系列 一》

二、phalcon入坑必須知道的功能《phalcon入坑指南系列 二》

三、phalcon如何切換資料庫《phalcon入坑指南系列 三》

前言

Phalcon如何建立多子產品并能進行通路 《Phalcon入坑指南系列 四》

使用phalcon架構大多數都是為了其多子產品功能來的,今天來聊聊phalcon多子產品如何使用。

依然是一步一個坑,使用這個架構就是痛并快樂着,一邊承受坑帶來的痛苦,一邊享受解決坑的快樂。

一、建立一個多子產品應用

使用指令先來建立出一個多子產品的項目​<code>​phalcon create-project kakamodules modules​</code>​

Phalcon如何建立多子產品并能進行通路 《Phalcon入坑指南系列 四》

可以看到生成的項目隻有一個預設的frontend子產品。

在frontend子產品的index控制器中先來試試通路先,看多子產品是如何通路的。

Phalcon如何建立多子產品并能進行通路 《Phalcon入坑指南系列 四》

跟咔咔想的結果是如出一轍,就是預設進的這個子產品的index方法。

先按照常理出牌,按照正常方式看是否會正常通路

在​<code>​app/modules/frontend/controllers/indexcontroller.php​</code>​這個檔案裡邊建立一個kaka方法

Phalcon如何建立多子產品并能進行通路 《Phalcon入坑指南系列 四》

進行通路測試

Phalcon如何建立多子產品并能進行通路 《Phalcon入坑指南系列 四》

看來phalcon還是迎合大衆的胃口的。

二、注意:當你多子產品無法通路怎麼辦

還記得在第一期文章中将單子產品建立好了之後對nginx修改了一次配置。

這個也是官方給提供的配置,按理說如果配置好了,後邊就是再建立多子產品也不會影響什麼。

咔咔就是走了不尋常之路,重新配置了一個虛拟域名,但沒有修改nginx配置,是以一直提示無法通路。

如果你也出現了如下界面,則看看自己是否配置了nginx

Phalcon如何建立多子產品并能進行通路 《Phalcon入坑指南系列 四》

可以看到跟上文的通路路徑是一緻的,就會出現這樣的情況。一定要看看是否配置了nginx。

下圖是咔咔的配置,如有需要可以直接複制拿過去使用。

Phalcon如何建立多子產品并能進行通路 《Phalcon入坑指南系列 四》

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

三、如何建立屬于自己的一個子產品

使用指令來建立一個屬于自己的子產品​<code>​phalcon module --name kaka --namespace=kaka --output=app/modules​</code>​

Phalcon如何建立多子產品并能進行通路 《Phalcon入坑指南系列 四》

建立出來的kaka子產品,你可以看到在controller中是沒有檔案的,那麼這個檔案是否可以用指令來進行建立呢?

那肯定是可以的喽!​<code>​phalcon controller --name index --output=app/modules/kaka/controllers​</code>​

Phalcon如何建立多子產品并能進行通路 《Phalcon入坑指南系列 四》

檔案到手天下我有,先來通路一波看是否可以。

Phalcon如何建立多子產品并能進行通路 《Phalcon入坑指南系列 四》

這可是真無情,但也無妨。根據報錯資訊可得知​<code>​kakamodules\modules\frontend\controllers\kakacontroller handler class cannot be loaded​</code>​通路路徑莫名其妙進入到了系統預設的frontend子產品。

先不管這個錯誤是怎麼發生的,先來看看建立出的檔案是不是有問題,非常明顯的一個問題就是沒有命名空間。

先給控制器加上命名空間先。

Phalcon如何建立多子產品并能進行通路 《Phalcon入坑指南系列 四》

此時還需要十分注意的是module這個檔案,此檔案是非常重要的,同樣也要添加對應的命名空間。

Phalcon如何建立多子產品并能進行通路 《Phalcon入坑指南系列 四》

這一切做完之後再回來看這個問題。

Phalcon如何建立多子產品并能進行通路 《Phalcon入坑指南系列 四》

接下來的處理方式非常重要,也是當發現一個問題時應該如果應對的方式。

當看到這個問題時,一定要反應出來的第一個點就是為什麼别的子產品也進入到了系統的預設子產品。

那麼你就需要反應到是系統肯定在哪裡設定一個預設通路子產品。

在單子產品時我們知道了在server檔案中加了非常多重要的資訊,接下來看看。

Phalcon如何建立多子產品并能進行通路 《Phalcon入坑指南系列 四》

果不其然在這個檔案中找到了設定了預設的通路子產品。

當把這個配置取消之後發現又出現了另一個錯誤。

Phalcon如何建立多子產品并能進行通路 《Phalcon入坑指南系列 四》

給出的資訊就是找不到view這服務。

這個問題估計很多小夥伴就對這個錯誤無休無止的進行試錯了,這個問題直接給大家解決方案。

試想一下,多子產品肯定是要進行注冊的,否則根本就無法對應的,這個操作當然也不是指令行直接生成好的,從建立控制器就可以得知,指令行生成檔案還是需要進行簡單處理一下才能直接使用的。

咔咔最終是在這個檔案中找到了注冊子產品的位置,然後加上我們自己的子產品即可。

Phalcon如何建立多子產品并能進行通路 《Phalcon入坑指南系列 四》

此時再來進行通路,依然沒有成功,還是報錯。

Phalcon如何建立多子產品并能進行通路 《Phalcon入坑指南系列 四》

真是一步一個坎呐!此時給出的錯誤又是這個模型沒有在容器中。

說實話這個架構的便利之處還沒發現,反正就是一步一步坑。

直接在loader檔案中加上下圖代碼即可。

Phalcon如何建立多子產品并能進行通路 《Phalcon入坑指南系列 四》

此時再進行通路。

Phalcon如何建立多子產品并能進行通路 《Phalcon入坑指南系列 四》

真的是很不容易啊!經曆了一步一步的摸索終于将多子產品打通了。

四、建立了一個多子產品後都應該做那些操作

第三節是咔咔一邊分析一邊修改代碼,直至最後成功的結果。

為了大家可以直接看到操作流程,重新開了一個目錄給大家友善查閱。

​<code>​phalcon module --name kaka --namespace=kaka --output=app/modules​</code>​ 建立出一個kaka的子產品

​<code>​phalcon controller --name index --output=app/modules/kaka/controllers​</code>​給kaka子產品建立一個index控制器

修改控制器index和module的命名空間

在檔案​<code>​app/bootstrap_web.php​</code>​添加kaka子產品

server_web的預設子產品中的預設目錄可不用注釋

在檔案​<code>​app/config/loader.php​</code>​中方法​<code>​registerclasses​</code>​進行添加子產品資訊。

以上就是建立一個自己的子產品執行流程。

五、總結

本文主要講解的是在phalcon架構中使用指令行建立出自己的子產品,并且可以進行通路。

這點内容也是折騰了咔咔近倆個小時,再用點時間争取把這個架構給弄明白。

堅持學習、堅持寫作、堅持分享是咔咔從業以來一直所秉持的信念。希望在偌大網際網路中咔咔的文章能帶給你一絲絲幫助。我是咔咔,下期見。