Jump to content

Module Controleur : ClassNotFoundException pour FrameworkBundleAdminController


Recommended Posts

Bonjour,

Je tente de créer un controleur pour un module dans le Back-office avec Symfony et je rencontre une erreur ClassNotFoundException avec FrameworkBundleAdminController.

L'erreur survient lorsque je tente d'afficher la page associée à ce controleur

Je fais mes essais avec Prestashop 1.7.7.0 rc1.

Voici mes fichiers associés au module nommé ht_doctrine :

// ht_doctrine.php

declare(strict_types=1);

if (!defined('_PS_VERSION_')) {
    exit;
}
if (file_exists(__DIR__.'/vendor/autoload.php')) {
    require_once __DIR__.'/vendor/autoload.php';
}

class Ht_doctrine extends Module
{
    public function __construct()
    {
        $this->name = 'ht_doctrine';
        $this->author = 'Hugues';
        $this->version = '1.0.0';
        $this->ps_versions_compliancy = ['min' => '1.7.7', 'max' => _PS_VERSION_];
        $this->need_instance = 0;

        $this->bootstrap = true;

        parent::__construct();

        $this->displayName = $this->l('Exemple HW Doctrine');
        $this->description = $this->l('Demonstration des entités Doctrine');
    }

    public function install()
    {
        return parent::install()
            && $this->registerHook('displayHome');
    }
    public function uninstall()
    {
        return parent::uninstall();
    }
    public function getContent()
    {
        Tools::redirectAdmin(
            $this->context->link->getAdminLink('AdminHtDoctrineQuote')
        );
    }
    public function hookDisplayHome()
    {
        $this->smarty->assign(['quotes' => []]);
        return $this->fetch('module:ht_doctrine/views/templates/hooks/quotes.tpl');
    }
}


 

# config/routes.yml
htdoctrine_quote_index:
    path: /htdoctrine/quotes
    methods: [GET]
    defaults:
        _controller: 'Prestashop\Module\HtDoctrine\Controller\Admin\QuotesController::indexAction'
        _legacy_controller: 'AdminHtDoctrineQuote'
        _legacy_link: 'AdminHtDoctrineQuote'

 

// src/Controller/Admin/QuotesController.php
namespace Prestashop\Module\HtDoctrine\Controller\Admin;

use PrestashopBundle\Controller\Admin\FrameworkBundleAdminController;
use Symfony\Component\HttpFoundation\Response;

class QuotesController extends FrameworkBundleAdminController
{
    public function indexAction(): Response
    {
        return $this->render('@Modules/ht_doctrine/views/templates/admin/index.html.twig');
    }
}


 

composer.json :

{
  "name": "lhapaipai/htdoctrine",
  "autoload": {
    "psr-4": {
      "Prestashop\\Module\\HtDoctrine\\": "src/"
    }
  },
  "config": {
    "prepend-autoloader": false,
  },
  "type": "prestashop-module"
}

 

Avant de lancer le module je réalise ces commandes
 

rm -rf var/cache/dev
cd modules/<mon-module>
composer dump-autoload

Au premier essai (avec cache vide) tout marche parfaitement mais dès que je rafraichit la page ou si j'y reviens plus tard (bref que le dossier var/cache/dev n'est plus vide) , alors je rencontre cette exception.

Quote


Attempted to load class "FrameworkBundleAdminController" from namespace "PrestashopBundle\Controller\Admin".
Did you forget a "use" statement for "PrestaShopBundle\Controller\Admin\FrameworkBundleAdminController"?

ClassNotFoundException
in modules/ht_doctrine/src/Controller/Admin/QuotesController.php (line 7)


 

    namespace Prestashop\Module\HtDoctrine\Controller\Admin;
    use PrestashopBundle\Controller\Admin\FrameworkBundleAdminController;
    use Symfony\Component\HttpFoundation\Response;
--> class QuotesController extends FrameworkBundleAdminController
    {
        public function indexAction(): Response
        {
            return $this->render('@Modules/ht_doctrine/views/templates/admin/index.html.twig');
        }

 

Je ne maitrise pas très bien composer et en particulier la façon dont le fichier composer.json à la racine de prestashop interagit avec celui du module...

Auriez-vous une idée pour résoudre ce problème ?

Merci et bonne journée.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...