Im travaillant sur un module d'administration personnalisé pour magento, et en essayant d'apprendre l'approche de magento en même temps =). Im actuellement sur la version CE 1.6.Comment utiliser les objets de collection de Magento?
J'ai suivi quelques tutoriels et articles et j'ai réussi à installer une table db personnalisée et je pense que j'ai réussi à faire fonctionner la classe make collection. (Je devrais dire Im nouveau à Zend Framework/Magento et un débutant programmeur qualifié). Au moins le code suivant me obtenir est le bon résultat:
$department_collection = Mage::getModel('custom/systemconfig')->getCollection()
->addFilter('name','departments');
Quand je var_dump cela avec $department_collection->getData()
je reçois un tableau avec les lignes filtrées de mon DB.
Maintenant, lorsque je tente de le faire:
foreach ($department_collection as $department) {
$department->delete();
}
Je reçois une exception Magento:
-Attention: include (Mage \ Upperfield \ Model \ Systemconfig.php) [function.include ]: Impossible d'ouvrir le flux: Aucun fichier ou répertoire dans D: \ wamp \ www \ magento \ lib \ Varien \ Autoload.php sur la ligne 93
Le problème est que je suppose que j'ai mal configuré ma structure de répertoire, mais Je ne comprends pas ce que c'est. Et la trace n'est pas beaucoup d'aide car elle est concaténée et ne montre que des informations non pertinentes.
Ma structure de répertoire ressemble à ceci:
+app
+code
+local
+Namespace
+Module
+Model
+Mysql4
+Systemconfig
Collection.php
Systemconfig.php
Systemconfig.php
J'ai chargé mes modèles avec:
//file: ../Mysql4/Systemconfig.php
class Namespace_Module_Model_Mysql4_Systemconfig extends Mage_Core_Model_Mysql4_Abstract{
protected function _construct()
{
$this->_init('module/systemconfig', 'systemconfig_id');
}
}
// file: ../Mysql4/Systemconfig/Collection.php
class Namespace_Module_Model_Mysql4_Systemconfig_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract {
protected function _construct()
{
$this->_init('namespace/systemconfig');
}
}
Mon config.xml ressemble actuellement à ceci (extrait):
<models>
<module>
<class>Namespace_Module_Model</class>
<resourceModel>module_mysql4</resourceModel>
</module>
<module_mysql4>
<class>Namespace_Module_Model_Mysql4</class>
<entities>
<systemconfig>
<table>module_systemconfig</table>
</systemconfig>
</entities>
</module_mysql4>
Ma conjecture est soit: Je configure la classe de collection avec une structure incorrecte, ou Je ne comprends pas comment utiliser l'objet de collection.
Tout wiz là-bas qui pourrait m'expliquer ce qui se passe ici? Gratefull pour toute aide.
Meilleures salutations Adde
Désolé, lors de la lecture à travers la question après le post que je viens de réaliser que je mis en place init avec espace de noms au lieu d'alias de module dans le modèle de collection. Problème résolu. J'adore comment passer une nuit entière à regarder le même code et ne pas réaliser une erreur évidente comme ça .. –
Avez-vous trouvé ce tutoriel: http://alanstorm.com/magento_models_orm – Max
Oui, merci beaucoup. J'ai vérifié cela et les articles d'Alan Storms sur magentocommerce.com dehors. C'est ce qui m'a permis d'arriver à ce point. Comme je l'ai dit dans le commentaire précédent, c'était une sorte de faute de frappe, j'ai essayé de lancer le modèle Collection avec ... init ('namespace/model') au lieu de ... init (module/model) Je me suis rendu compte après le post mais je ne peux pas répondre à ma propre question dans les 8 heures. Merci pour les commentaires et félicitations à Alan. –