1. 程式人生 > >Magento全域性配置檔案的一些理解

Magento全域性配置檔案的一些理解

今天在建立Magento自定義Block的時候遇到了一些問題,解決過程中也對於Magento配置檔案中的Global節點有了一些新的認識。看如下程式碼,

class Angrybats_Ships_Block_Helloworld extends Mage_Core_Block_Template
{
    ...
}

這段程式碼建立了一個自定義Block類,在控制器中本應該可以通過$this->getLayout->createBlock(‘ships/helloworld’)例項化該Block物件。可是在除錯過程中一直無法正確例項化該類,把ships/helloworld換成core/template的話,可以正常獲取到例項物件。最後,想想可能是配置檔案中沒有宣告該模組Block類名,看了一下核心模組的配置檔案,在對比自己的配置檔案,發現少了如下一段程式碼。

<global>
    ...
    <blocks>
        <ships>
            <class>Angrybats_Ships_Block</class>
        </ships>
    </blocks>
    ...
</global>

綜合這段程式碼以及之前在建立模型、模型資源的時候在Global節點中的配置程式碼,可以得出一個結論。在系統的模組中,如果想使用createBlock(‘ships/helloworld’),以及類似的getModel(),getSinleton()這種字串例項化類的方法,必須在配置檔案的Global節點中宣告該模組相應區域(block,model,模型資源等)的全域性類名。