THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline

#1 Création de compte

(15-11-2018 17:00:26)


J'ai cette erreur et je comprend pas la source : PHP Fatal error:  Class 'Thelia\\Core\\Event\\Customer\\CustomerCreateOrUpdateEvent' not found in C:\\xampp\\htdocs\\shop\\local\\modules\\CreateOrUpdateCustomer\\Controller\\CreateNewCustomerController.php on line 63,

Voici mon code dans mon controller:
class CreateNewCustomerController extends BaseFrontController
{
    public function createCustomerAction(){
  if ($nbrAdherent == 1 && $nbrPersonnel == 0) {
               
                  $customerCreateEvent = new CustomerCreateOrUpdateEvent(

                     1, // civilite non identifiee dans t_adherent 1 = M.
                      $pdo->query ( "Select sNomContact from t_adherent where nIdAdherent = '$id'" )->fetchColumn (), // First name
                      $pdo->query ( "Select sPrenomContact from t_adherent where nIdAdherent = '$id'" )->fetchColumn (), //Last name
                      $pdo->query ( "Select sAdresse1 from t_adherent where nIdAdherent = '$id'" )->fetchColumn (), // address 1
                      $pdo->query ( "Select sAdresse2 from t_adherent where nIdAdherent = '$id'" )->fetchColumn (), // address 2
                      '', // address 3'',
                      $pdo->query ( "Select sTelephone from t_adherent where nIdAdherent = '$id'" )->fetchColumn (), // telephone
                      $pdo->query ( "Select sMobile from t_adherent where nIdAdherent = '$id'" )->fetchColumn (), // cellphone
                      $pdo->query ( "Select sCodePostal from t_adherent where nIdAdherent = '$id'" )->fetchColumn (), // zip code
                      $pdo->query ( "Select sVille from t_adherent where nIdAdherent = '$id'" )->fetchColumn (), // city,
                      64, // pays: 64 = France
                      $email, // email
                      md5($pwd), // password
                      $this->getSession()->getLang()->getId(),
                      null, // reseller
                      null, // sponsor
                      0, // discount
                      $token, // remmeber_me_token
                      null, // company
                      generateRef() // ref
                  );

                  $this->dispatch(TheliaEvents::CUSTOMER_CREATEACCOUNT, $customerCreateEvent);
}
}

Offline

#2 Re: Création de compte

(19-11-2018 08:34:21)


Bonjour, y a pas de réponse?
Je n'arrive toujours pas à trouver une solution , dans le controller qui est dans mon module il reconnait pas CustomerCreateOrUpdateEvent sachant que je l'avais importer
use Thelia\Core\Event\Customer\CustomerCreateOrUpdateEvent;

Offline

#3 Re: Création de compte

(19-11-2018 11:37:27)


C'est plus un problème avec ton code PHP qu'un problème Thelia.

C'est difficile de dire où tu t'es trompé là comme ça dans voir tout ton code.


OpenStudio Toulouse

Offline

#4 Re: Création de compte

(19-11-2018 11:46:57)


1/ j'ai crée une fonction createCustomerAction() dans mon controller  CreateNewCustomerController dans mon propre module

2/ j'ai surcharger la route /login du module Front:
<route id="customer.login.process" path="/login" methods="post">
        <default key="_controller">CreateOrUpdateCustomer\Controller\CreateNewCustomerController::createCustomerAction</default>
        <default key="_view">login</default>
    </route>

3/ j'ai mis mon code de création de compte:
$customerCreateEvent = new CustomerCreateOrUpdateEvent(
            1, // Mr
            'prenom',
            'nom',
            '54 rue test',
            '',
            '',
            '0658454515',
            '0654875935',
            '67100',
            'Strasbourg',
            64, //France
            'test@gmail.com',
            'tebnbvnvbnvbst',
            1, //français
            false,
            null,
            null,
            null,
            'CUS000000000TEST1',
            null

        );
        $this->getDispatcher()->dispatch(TheliaEvents::CUSTOMER_CREATEACCOUNT, $customerCreateEvent);

4/ j'ai rajouté "use Thelia\Core\Event\Customer\CustomerCreateOrUpdateEvent;" dans ma classe

Offline

#5 Re: Création de compte

(21-11-2018 09:38:56)


Bonjour,
je me permet de vous relancer parce que je suis toujours bloquée sur le CustomerCreateOrUpdateEvent avec la même erreur.
Merci de me fournir une réponse le plus vite possible

Offline

#6 Re: Création de compte

(21-11-2018 11:59:27)


Tu as eu une réponse.

C'est plus un problème avec ton code PHP qu'un problème Thelia.

C'est difficile de dire où tu t'es trompé là comme ça dans voir tout ton code.


OpenStudio Toulouse

Offline

#7 Re: Création de compte

(21-11-2018 14:07:16)


Et ben pour s'assurer que c'est pas le cas j'ai mis ce bout de code dans une fonction où y a que la création de compte dedans et j 'ai toujours le même problème:

namespace CreateOrUpdateCustomer\Controller;

use Thelia\Controller\Front\BaseFrontController;
use Thelia\Core\Event\Customer\CustomerCreateOrUpdateEvent;
class CreateNewCustomerController extends BaseFrontController
{
   public function createCustomerAction ()
    {

    $customerCreateEvent = new CustomerCreateOrUpdateEvent(
            1,
            "thelia",
            "thelia",
            "street address 1",
            "street address 2",
            "street address 3",
            "0102030405",
            "0607080910",
            "63000",
            "clermont-ferrand",
            64,
            sprintf("%s@thelia.fr", uniqid()),
            uniqid(),
            1,
            0,
            0,
            0,
            'My super company',
            null
        );
   $this->getDispatcher()->dispatch(TheliaEvents::CUSTOMER_CREATEACCOUNT, $customerCreateEvent);
}
}

Last edited by Samia (21-11-2018 14:14:22)

Offline

#8 Re: Création de compte

(21-11-2018 17:08:22)


Il manque un use :

use Thelia\Core\Event\TheliaEvents;


OpenStudio Toulouse

Offline

#9 Re: Création de compte

(21-11-2018 17:31:03)


J'ai mal copier la partie use donc ce use est bien présent dans ma classe et ça marche toujours pas,
En+ mon code se bloque à la ligne où j'instancie la classe CustomerCreateOrUpdateEvent donc il arrive même pas à voir le reste du code.
J'ai aussi utiliser class_exists dans ma classe pour voir si CustomerCreateOrUpdateEvent existe ou pas , ben il me renvoi false sachant que le use est bien présent.

Last edited by Samia (21-11-2018 17:37:01)

Offline

#10 Re: Création de compte

(21-11-2018 18:15:58)


Si l'autoload ne fonctionne pas pour ton contrôleur, c'est soit qu'il n'est pas à la bonne place, soit que tu l'invoque de manière incorrecte.

Donc, le contrôleur doit être dans <racine Thelia>/local/modules/CreateOrUpdateCustomer/Controller/CreateNewCustomerController.php

Le contrôleur ne peut fonctionner que si tu l'invoque avec l'URL qui tu as défini dans le router.xml de ton module, en l'occurrence quand tu soumet la form de login.


OpenStudio Toulouse

Offline

#11 Re: Création de compte

(22-11-2018 08:30:08)


Le contrôleur est bien dans le bon endroit et il fonctionne, parce que pour tester qu'il rentre bien dans mon contrôleur j'avais afficher des messages.
Le problème est seulement avec CustomerCreateOrUpdateEvent , le reste des use fonctionne bien comme il faut y a que cette classe qui bloque.

J'ai essayé de changer son nom pour qu'il puisse la voir et ça a marché mais bien sur je peux pas garder un autre nom, mais si ça marche avec un autre nom c'est que y a un problème de duplication de nom mais j'ai bien vérifié et c'est pas le cas au moins dans mon module y'a pas de classe ni de fonction qui a le nom CustomerCreateOrUpdateEvent .

Je comprend pas ça me bloque