Por que o Magento está procurando esse arquivo como meu modelo de recursos?'Falha ao abrir o stream…Esse arquivo não existe'
-
12-12-2019 - |
Pergunta
Estou tentando criar um modelo pela primeira vez no Magento - o modelo de recursos é Mygroup_Mymodule_Model_Resource_Link
O alias do modelo que usei é mygroup_mymodule/link
estou tentando ligar $myVar = Mage::getModel('mygroup_mymodule/link')
mas estou recebendo este erro:
Warning: include(Mage/Mygroup/Mymodule/Resource/Model/Link.php): failed to open stream: No such file or directory in /[root]/lib/Varien/Autoload.php on line 93
Isto é verdade:lá é nenhum arquivo lá, ou em app/code/local/Mygroup/Mymodule/Resource/Model/Link.php
, mas não sei por que o Magento acha que deveria haver.
Minha estrutura de pastas é:
...
- Model/
- Link.php
- Resource/
- Link.php
- Link/
- Collection.php
...
app/code/local/Mygroup/Mymodule/etc/config.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<Mygroup_Mymodule>
<version>0.0.6</version>
</Mygroup_Mymodule>
</modules>
<frontend>
<routers>
<downloadable>
<use>standard</use>
<args>
<modules>
<Mygroup_Mymodule before="Mage_Downloadable">Mygroup_Mymodule</Mygroup_Mymodule>
</modules>
</args>
</downloadable>
</routers>
</frontend>
<global>
<helpers>
<downloadable>
<rewrite>
<download>Mygroup_Mymodule_Helper_Download</download>
</rewrite>
</downloadable>
</helpers>
<models>
<mygroup_mymodule>
<class>Mygroup_Mymodule_Model</class>
<resourceModel>mygroup_mymodule_resource</resourceModel>
</mygroup_mymodule>
<mygroup_mymodule_resource>
<entities>
<link>
<table>mygroup_mymodule_link</table>
</link>
</entities>
</mygroup_mymodule_resource>
</models>
<resources>
<mygroup_mymodule_setup>
<setup>
<module>Mygroup_Mymodule</module>
<class>Mage_Core_Model_Resource_Setup</class>
</setup>
<connection>
<use>core_setup</use>
</connection>
</mygroup_mymodule_setup>
</resources>
</global>
</config>
app/code/local/Mygroup/Mymodule/Model/Link.php
:
<?php
class Mygroup_Mymodule_Model_Link extends Mage_Core_Model_Abstract
{
protected function _construct()
{
$this->_init('mygroup_mymodule/link');
}
...
app/code/local/Mygroup/Mymodule/Model/Resource/Link.php
:
<?php
class Mygroup_Mymodule_Model_Resource_Link
extends Mage_Core_Model_Resource_Db_Abstract
{
protected function _construct()
{
$this->_init('mygroup_mymodule/link', 'entity_id');
}
}
app/code/local/Mygroup/Mymodule/Model/Resource/Link/Collection.php
:
<?php
class Mygroup_Mymodule_Model_Resource_Link_Collection
extends Mage_Core_Model_Resource_Db_Collection_Abstract
{
protected function _construct()
{
parent::_construct();
$this->_init(
'mygroup_mymodule/link',
'mygroup_mymodule/link'
);
}
}
Também tenho um Helper e um controlador no módulo (como você pode ver no arquivo de configuração), mas não acho que isso seja relevante aqui.
Muito obrigado por qualquer ajuda!
Estou usando CE 1.9.0.1
Solução
Parece que você está perdendo um class
definição na configuração do seu modelo de recursos:
<mygroup_mymodule_resource>
<class>Mygroup_Mymodule_Model_Resource</class>
<entities>
<link>
<table>mygroup_mymodule_link</table>
</link>
</entities>
</mygroup_mymodule_resource>