非常相似to this guy我试图关注Alan Storm的tutorial来实例化一个模型。我不太清楚为什么它不起作用。
我尽可能地遵循教程。我能够达到以下错误:
"警告:include(Mage / Company / Mymodulename / Model / Artwork.php):无法打开流:没有这样的文件或目录"
但我一直无法显示类名(请参阅IndexController.php)。
当我尝试实例化我的模型时,会出现问题。我怀疑这个问题可能与一些小的语义有关,所以我试图在网络卫生过程中密切关注大写。
我可以使用我可能做错的任何帮助吗?
我的文件结构如下:
[app]
[code]
[local]
[Company]
[MyModuleName]
[block]
[controllers]
IndexController.php
[etc]
config.xml
system.xml
[Helper]
Data.php
[Model]
Artwork.php
[sql]
我的XML如下:
<config>
<!-- ... -->
<global>
<!-- ... -->
<models>
<MyModuleName>
<class>Company_MyModuleName_Model</class>
<resourceModel>MyModuleName_mysql4</resourceModel>
</MyModuleName>
</models>
<!-- ... -->
</global>
<frontend>
<routers>
<Company_MyModuleName>
<use>standard</use>
<args>
<module>Company_MyModuleName</module>
<frontName>frontname</frontName>
</args>
</Company_MyModuleName>
</routers>
</frontend>
<!-- ... -->
</config>
如果我的模型成功实例化,则$ blogpost应在http://domain.com/frontname/index/testModel显示我的班级名称。
file:app / code / local / Company / MyModuleName / controllers / IndexController.php
class Company_MyModuleName_IndexController extends Mage_Core_Controller_Front_Action {
public function testModelAction() {
$blogpost = Mage::getModel('company_mymodulename/artwork');
echo get_class($blogpost);
}
}
file:app / code / local / Company / MyModuleName / Model / Artwork.php
class Company_MyModuleName_Model_Artwork extends Mage_Core_Model_Abstract
{
protected function _construct()
{
$this->_init('company_mymodulename/artwork');
}
}
答案 0 :(得分:1)
立即弹出两件事。首先,我假设您尝试使用看起来像这样的代码来实例化模块
Mage::getModel('company_mymodulename/artwork');
请参阅company_mymodulename
?这是组名。您希望它与您的配置相匹配。换句话说,这个
<models>
<MyModuleName>
<class>Company_MyModuleName_Model</class>
<resourceModel>MyModuleName_mysql4</resourceModel>
</MyModuleName>
</models>
应该是这个
<models>
<company_mymodulename>
<class>Company_MyModuleName_Model</class>
<resourceModel>company_mymodulename_mysql4</resourceModel>
</company_mymodulename>
</models>
其次,虽然技术上合法,但在模块和类名(MyModuleName
)中使用混合大小写是一个坏主意。自动加载器实现具有一定的敏感性,并且很容易略微错误地命名并且没有意识到。坚持Leading_Word_Case_For_Mymodulename
。