Bonjour,

Je cherche à faire une nouvelle fonctionnalité:

Dans le dashboard(Account customer) je voudrais que l' utilisateur puisse ajouter une liste de mail:

Je commence par créer les répertoires dans le home de magento:

<%HOME_MAGENTO%>\service_presse\app\locale\Mailinglist\Email

j'ai un répertoire \etc avec le config.xml et sont contenu:

Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?xml version="1.0"?>
<config>
    <modules>
        <Mailinglist_Email>
            <version>0.1.0</version>
        </Mailinglist_Email>
    </modules>
    <global>
        <models>
            <email>
                <!-- Init model for mymod module -->
                <class>Mailinglist_Email_Model</class>
                <!-- Init db config handler for mymod models -->
                <resourceModel>email_mysql4</resourceModel>
            </email>
 
            <!-- declaring model vs db table relation -->
            <email_mysql4>
                <class>Mailinglist_Email_Model_Mysql4</class>
                <!-- declate table test -->
                <entities>
                    <carnetemail>
                        <table>carnetemail</table>
                    </carnetemail>
                </entities>
                <!-- -/- -->
            </email_mysql4>
            <!-- -/- -->
        </models>
 
	  <frontend>
		   <routers>
			  <routeurfrontend>
				  <use>standard</use>
				  <args>
					 <module>Mailinglist_Email</module>
					 <frontName>mailinglist</frontName>
				  </args>
			   </routeurfrontend>
		   </routers>
		</frontend>        
 
        <!-- Setup db read & write connection for Mymod module -->
        <resources>
            <!-- db write connection -->
            <email_write>
                <connection>
                    <use>core_write</use>
                </connection>
            </email_write>
            <!-- db read connection -->
            <email_read>
                <connection>
                    <use>core_read</use>
                </connection>
            </email_read>
        </resources>
        <!-- -/- -->
    </global>
</config>


dans \Model j'ai Carnetemail.php

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
<?php
 
class Mailinglist_Email_Model_Carnetemail extends Mage_Core_Model_Abstract
{
 
    public function _construct()
    {
    	Mage::log('Mailinglist_Email_Model_Carnetemail:_construct =>  '.$model, Zend_Log::INFO,'Mailinglist_php_construct.txt',true);
        parent::_construct();
        $this->_init('email/carnetemail');
    }
}
dans \Mysql4
j'ai Carnetemail.php et le répertoire \Carnetemail ou j'ai le fichier Collection.php et
Carnetemail.php =>

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
<?php
 
class Mailinglist_Email_Model_Mysql4_Carnetemail extends Mage_Core_Model_Mysql4_Abstract
{
    public function _construct()
    {   
        $this->_init('email/carnetemail', 'id_email');
    }
}
collection.php

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
<?php
 
class Mailinglist_Email_Model_Mysql4_Carnetemail_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
{
    public function _construct()
    {
        parent::_construct();
        $this->_init('email/carnetemail');
    }
}
Je pense avoir respecter la norme de la création des tables de magento de la façon suivante:

Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 CREATE TABLE `shemaXXX`.`carnet_email` (
	 `id_email` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
	 `id_customer` INT( 11 ) NOT NULL,
	 `nom` VARCHAR( 50 ) NOT NULL ,
	 `prenom` VARCHAR( 50 ) NOT NULL ,
	 `email` VARCHAR( 20 ) NOT NULL);

J'ai id_customer car chaque customer peur avoir plusieurs mails associés.


Donc après toute cette configuration: pour testé dans Info.php je fais

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
$model = Mage::getModel('email/carnetemail');
$data = $model->getCollection()->getData();
Mais j'ai une belle erreur:
Fatal error: Call to a member function getCollection() on a non-object in

Voici l'erreur dans le system.log:

2013-03-29T11:13:23+00:00 ERR (3): Warning: include(Mage\Email\Model\Carnetemail.php): failed to open stream: No such file or directory in \%HOME_MAGENTO%\lib\Varien\Autoload.php on line 93
2013-03-29T11:13:23+00:00 ERR (3): Warning: include(): Failed opening 'Mage\Email\Model\Carnetemail.php' for inclusion (include_path='\%HOME_MAGENTO%\app\code\local;\%HOME_MAGENTO%\app\code\community;G:\%HOME_MAGENTO%\app\code\core;G:\%HOME_MAGENTO%\lib;.;C:\php\pear') in \%HOME_MAGENTO%\lib\Varien\Autoload.php on line 93
Comment faire pour rendre accessible la nouvelle table partout dans le code?


Merci par avance!