THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

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

Offline


Bonjour,

Après avoir réussi à mettre et à faire fonctionner la case à cocher Reseller à l'inscription, j'ai voulu faire la même chose pour l'update du profil. J'étais confiant, j'allais faire la même chose ! Et bien, ça ne marche pas. Pas d'erreur, l'info n'est juste pas mise à jour et lorsque l'on arrive sur la formulaire, si on est reseller, la case n'est pas cochée.

Le ticket à ce sujet : https://forum.thelia.net/viewtopic.php?pid=79588

Thelia 2.3.4 pour info.

Voici mon code

local/modules/NewrhoneModule/Config/config.xml

<?xml version="1.0" encoding="UTF-8" ?>

<config xmlns="http://thelia.net/schema/dic/config"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://thelia.net/schema/dic/config http://thelia.net/schema/dic/config/thelia-1.0.xsd">
    <forms>
        <form name="thelia.front.customer.create" class="NewrhoneModule\Forms\NewrhoneCustomerCreateForm"/>
        <form name="thelia.front.customer.profile.update" class="NewrhoneModule\Forms\NewrhoneCustomerProfileUpdateForm"/>
    </forms>

</config>

local/modules/NewrhoneModule/Forms/NewrhoneCustomerProfileUpdateForm.php

<?php

namespace NewrhoneModule\Forms;

use NewrhoneModule\NewrhoneModule;
use Thelia\Form\CustomerProfileUpdateForm;
use Thelia\Core\Translation\Translator;

class NewrhoneCustomerProfileUpdateForm extends CustomerProfileUpdateForm
{
    protected function buildForm()
    {
        parent::buildForm();

        $this->formBuilder
            ->add('reseller', 'integer', array(
                'label' => Translator::getInstance()->trans('I am a professional', [], NewrhoneModule::DOMAIN_NAME),
                'label_attr' => array(
                    'for' => 'reseller',
                ),
            ));

    }
}

templates/frontOffice/newrhone1/account-update.html

...
                        <!-- Reseller pour pro ajout artaban gl 230118 -->
                        {form_field field="reseller"}
                        <div class="form-group group-reseller">
                            <label class="control-label col-sm-3" for="{$label_attr.for}">
                                {$label}
                            </label>
                            <div class="control-input col-sm-5">
                                <input type="checkbox" id="{$label_attr.for}" name="{$name}" value="1" {if $value != 0}checked="checked"{/if}>
                            </div>
                            {if $error }
                            <span class="help-block">{$message}</span>
                            {/if}
                        </div><!--/.form-group-->
                        {/form_field}
...

Une idée ? Je pense pourtant que ça passe dans la même moulinette !

Merci davance pour toute piste !

Offline


Je t'avais bien dit de faire un override.


OpenStudio Toulouse

Offline


Je comprend pas. La function buildForm() est overider dans local/modules/NewrhoneModule/Forms/NewrhoneCustomerProfileUpdateForm.php, non ?

Pourrais tu avoir l'amabilité de me donner plus de détails ?

Il y a un truc qui m'échappe !

Merci.

Offline


Il y a confusion entre héritage et surcharge (override).

J'explique ici ce qu'est un override, et comment le mettre en œuvre : https://forum.thelia.net/viewtopic.php?pid=78512#p78512


OpenStudio Toulouse

Offline


Ce que j'ai fait s'appelle un override en anlais pour le php. Mais toi, tu parlais "thelia" ! Du coup, on se comprenais pas !

J'ai essayé selon ta méthode, j'ai plein d'erreurs en lançant la commande...

Je me suis débrouillé en utilisant service et action.

Merci de ton temps.