Bonjour à tous,

Dans le cadre du travail, je travail actuellement sur ZF2. J'ai suivis votre tuto (qui est par ailleurs très bien rédigé) mais j'obtiens une erreur lorsque je crée mes models de base de donnée.

Php m'indique que la classe User est introuvable...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
PHP Fatal error:  Class 'Zend\\Db\\ResultSet\\Row' not found in /UNXDEVCKT01/www/firewall/ZendFramework/module/Firewall/src/Firewall/Model/User.php on line 7, referer: https://firewall-dev.fr.local/Service/list


/module/Firewall/Module.php
Code : 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
<?php
namespace Firewall;
 
use Zend\Mvc\ModuleRouteListener;
use Zend\Mvc\MvcEvent;
use Firewall\Model\UserTable;
//use Zend\Db\ResultSet\ResultSet;
//use Zend\Db\TableGateway\TableGateway;
 
class Module
{
    public function onBootstrap(MvcEvent $e)
    {
        $eventManager        = $e->getApplication()->getEventManager();
        $moduleRouteListener = new ModuleRouteListener();
        $moduleRouteListener->attach($eventManager);
    }
 
    public function getConfig()
    {
        return include __DIR__ . '/config/module.config.php';
    }
 
    public function getAutoloaderConfig()
    {
        return array(
            'Zend\Loader\StandardAutoloader' => array(
                'namespaces' => array(
                    __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
                ),
            ),
        );
    }
 
    public function getServiceConfig()
    {
        return array(
        'factories' => array(
            'user-table' => function($sm) {
                $dbAdapter = $sm->get('db-adapter');
                $table = new UserTable($dbAdapter);
                return $table;
            },
        ),
        );
    }
}
/module/Application/Module.php
Code : 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
<?php
namespace Application;
 
use Zend\Mvc\ModuleRouteListener;
use Zend\Mvc\MvcEvent;
use Zend\Db\Adapter\Adapter as DbAdapter;
 
class Module
{
    public function onBootstrap(MvcEvent $e)
    {
        $eventManager        = $e->getApplication()->getEventManager();
        $moduleRouteListener = new ModuleRouteListener();
        $moduleRouteListener->attach($eventManager);
    }
 
    public function getConfig()
    {
        return include __DIR__ . '/config/module.config.php';
    }
 
    public function getAutoloaderConfig()
    {
        return array(
            'Zend\Loader\StandardAutoloader' => array(
                'namespaces' => array(
                    __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
                ),
            ),
        );
    }
 
    public function getServiceConfig()
    {
        return array(
            'factories' => array(
                'db-adapter' => function($sm) {
                    $config = $sm->get('config');
                    $config = $config['db'];
                    $dbAdapter = new DbAdapter($config);
                    return $dbAdapter;
                },
            ),
        );
 
    }
}
/module/Firewall/src/Firewall/Model/User.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
namespace Firewall\Model;
use Zend\Db\ResultSet\Row;
 
class User extends Row
{}
/module/Firewall/src/Firewall/Model/UserTable.php
Code : 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
<?php
 
namespace Firewall\Model;
use Zend\Db\TableGateway\AbstractTableGateway;
use Zend\Db\Adapter\Adapter;
use Zend\Db\ResultSet\ResultSet;
 
 
class UserTable extends AbstractTableGateway
{
    protected $table ='t_user';
    protected $tableName ='t_user';
 
    public function __construct(Adapter $adapter)
    {
        $this->adapter = $adapter;
        $this->resultSetPrototype = new ResultSet(new User);
        $this->initialize();
    }
 
    // Autres methodes....
 
}
/module/Firewall/src/Firewall/Controller/ServiceController.php

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
    public function addAction()
    {
        if (!$this->userTable) {
            $sm = $this->getServiceLocator();
            $this->userTable = $sm->get('user-table');
        }
        return $this->userTable;
     }

Je vous remercie beaucoup pour votre aide... Ca fait 2 jours que je cherche à comprendre mais rien à faire... J'arrive à executer des requete directement par l'adapter mais impossible comme votre tuto...

Cordialement,