THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

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

Offline


Hello ici!

Je suis en train de développer un module et pour gagner du temps je suis reparti d'un module que j'avais déjà créé.

J'ai bien tout remplacé les noms de variables etc.

Sauf que, quand je vais dans la page admin du module, ça me sort la page de l'autre module (qui est en dépendance).

return $this->render('index');

Si je mets

return $this->render('index2');

et que je renomme dans mes templates index.html par index2.html ça fonctionne...

une idée du pourquoi ça fait ça ?!


Aide les autres, ils t'aideront en retour.

Offline


(qui est en dépendance)

C'est à dire ?


OpenStudio Toulouse

Offline


roadster31 wrote:

(qui est en dépendance)

C'est à dire ?

<required>
	<module>AdditionalPseField</module>
</required>

C'est l'index de celui-ci qui est appelé par le controller.

<route id="RestrictedDelivery.main" path="/admin/module/RestrictedDelivery">
	<default key="_controller">RestrictedDelivery\Controller\Admin\RestrictedDeliveryController::noAction</default>
</route>
public function noAction()
{
	if (null !== $response = $this->checkAuth(self::RESOURCE_CODE, array(), AccessManager::VIEW)) {
		return $response;
	}

	// Render the edition template.
	return $this->render('index');
}

et dans la continuité, j'essaye d'insérer du js après les appels jQuery mais je n'y arrive pas...

<hooks>
	<hook id="restricted_delivery.hook">
		<tag name="hook.event_listener" event="module.config-js" type="back" templates="js:assets/js/module-configuration.js" />
	</hook>
</hooks>

Last edited by Elyos (10-05-2021 11:48:32)


Aide les autres, ils t'aideront en retour.

Offline


Lorsque Thelia cherche un template, il va aller examiner tout d'abord les répertoires du template principal (templates/backOffice/default) , puis les templates des modules (local/modules/*/templates/backOffice/default), dans l'ordre dans lequel les modules sont rangés sur la page "Modules" du BO

Donc imaginons que tu aies :

ModuleA/templates/backOffice/default/toto.html

et

ModuleB/templates/backOffice/default/toto.html

Si sur la page Modules, ModuleB est avant ModuleA, alors quand tu demandes un render('toto'), ce sera ModuleB/templates/backOffice/default/toto.html qui sera rendu.

Si ModuleB est après module A, alors ce sera ModuleA/templates/backOffice/default/toto.html qui sera rendu.

D'ou l'utilité d'utiliser un sous répertoire dans tes modules pour lever toute ambiguité, comme suit.

ModuleA/templates/backOffice/default/modulea/toto.html

et

ModuleA/templates/backOffice/default/moduleb/toto.html

Tu demandera alors explicitement render('modulea/toto') ou render('moduleb/toto')


OpenStudio Toulouse

Offline


mais je n'y arrive pas

C'est vague.

Il se passe quoi exactement ?


OpenStudio Toulouse

Offline


Ah ok!

Je vais renommer mes index alors ça sera plus simple ^^'


Aide les autres, ils t'aideront en retour.

Offline


roadster31 wrote:

mais je n'y arrive pas

C'est vague.

Il se passe quoi exactement ?

Bah rien... l'appel au JS n'est pas fait... il n'est pas "écrit" dans ma page HTML

Est-ce que l'appel du hook dans config est lié  aux hook de render dans ce même fichier ?

Si je regarde le module carousel l'appel du template (html) et du js se font dans le fichier config :

<hooks>
        <hook id="carousel.hook">
            <tag name="hook.event_listener" event="home.body" type="front" templates="render:carousel.html" />
            <tag name="hook.event_listener" event="module.configuration" type="back" templates="render:module_configuration.html" />
            <tag name="hook.event_listener" event="module.config-js" type="back" templates="js:assets/js/module-configuration.js" />
        </hook>
        <hook id="carousel.hook.back" class="Carousel\Hook\BackHook">
            <tag name="hook.event_listener" event="main.top-menu-tools" type="back" />
        </hook>
    </hooks>

Alors que moi mon template est appelé via le controller et le js via le hook du fichier config...

Last edited by Elyos (10-05-2021 14:01:44)


Aide les autres, ils t'aideront en retour.

Offline


Ton JS il est posée dans le hook module.config-js, soit celui qui est dans la page templates/backOffice/default/module-configure.html.

C'est bien ce que tu espères ?


OpenStudio Toulouse

Offline


Euh....

En fait ce que je souhaite...

C'est que mon js soit posé dans le hook qui est dans la page appelée par

<route id="RestrictedDelivery.main" path="/admin/module/RestrictedDelivery">
	<default key="_controller">RestrictedDelivery\Controller\Admin\RestrictedDeliveryController::noAction</default>
</route>
public function noAction()
{
	if (null !== $response = $this->checkAuth(self::RESOURCE_CODE, array(), AccessManager::VIEW)) {
		return $response;
	}

	// Render the edition template.
	return $this->render('RestrictedDelivery');
}

qui est la page de "configuration" du module (quand on clique sur la clef à molette dans la liste des modules)

et donc je pensais que j'avais bon dans ma déclaration de hook mais apparemment non... ^^'


Aide les autres, ils t'aideront en retour.

Offline


La tu rends la page RestrictedDelivery.html. C'est une page complète, donc tu peux mettre ce que tu veux dedans, pas besoin de passer par des hooks.


OpenStudio Toulouse

Offline


roadster31 wrote:

La tu rends la page RestrictedDelivery.html. C'est une page complète, donc tu peux mettre ce que tu veux dedans, pas besoin de passer par des hooks.

Oui mais le souci c'est que mon JS (jQuery) est appelé avant l'appel jQuery...


Aide les autres, ils t'aideront en retour.

Offline


Je ne comprends pas ce que tu fais. C'est une page complète RestrictedDelivery.html, ce n'est pas un fragment de page qui va être placé dans une des pages standard (genre module-configure.html).

Donc tu met bien ce que tu veux dedans, et ton code JS tu le met ou tu veux, non ?


OpenStudio Toulouse

Offline


Bon bah je dois pas tout saisir encore alors...

J'ai
RestrictedDelivery.html

{extends file="RestrictedDelivery.tpl"}

{block name="inner-content"}
...
{block}

RestrictedDelivery.tpl

{extends file="admin-layout.tpl"}

{block name="page-title"}{intl d='restrictedDelivery.bo.default' l='Management of restricted delivery rules'}{/block}

{block name="check-resource"}module.RestrictedDelivery{/block}
{block name="check-access"}update{/block}

{block name="main-content"}
    <div class="modules">
        <div id="wrapper" class="container">
            <div class="clearfix">
                <ul class="breadcrumb pull-left">
                    <li><a href="{url path='/admin/home'}">{intl d='restrictedDelivery.bo.default' l="Home"}</a></li>
                    <li><a href="{url path='/admin/modules'}">{intl d='restrictedDelivery.bo.default' l="Modules"}</a></li>
                    <li><a href="{url path='/admin/module/RestrictedDelivery'}">{intl d='restrictedDelivery.bo.default' l="Management of restricted delivery rules"}</a></li>
                </ul>
            </div>

            <div class="row">
                <div class="col-md-12">
                    <div class="general-block-decorator">
                        {block name="inner-content"}{/block}
                    </div>
                </div>
            </div>
        </div>
    </div>
{/block}

et tout ça appelé par
routing.xml

<route id="RestrictedDelivery.main" path="/admin/module/RestrictedDelivery">
        <default key="_controller">RestrictedDelivery\Controller\Admin\RestrictedDeliveryController::noAction</default>
</route>

et dans le controller

public function noAction()
    {
        if (null !== $response = $this->checkAuth(self::RESOURCE_CODE, array(), AccessManager::VIEW)) {
            return $response;
        }

        // Render the edition template.
        return $this->render('RestrictedDelivery');
    }

Aide les autres, ils t'aideront en retour.

Offline


Il y a une raison pour que tu aies un fichier RestrictedDelivery.tpl et un fichier RestrictedDelivery.html ? Tu reutilises le tpl ?

Pourquoi ne pas avoir tout mis dans RestrictedDelivery.html ?


OpenStudio Toulouse

Offline


Je suis reparti d'un module ^^'

A la base RestrictedDelivery.html c'était index.html mais comme ça foirait les appels je l'ai renommé...

Donc à part ça y'a aucune raison ^^' (sauf si un jour je rajoute des pages...)


Aide les autres, ils t'aideront en retour.

Offline


Bon du coup je sais pas ce que je dois faire...


Aide les autres, ils t'aideront en retour.

Offline


keep it simple ! Un fichiEr html suffit, je ne comprends pas pourquoi tu as un tpl


OpenStudio Toulouse

Offline


roadster31 wrote:

keep it simple ! Un fichiEr html suffit, je ne comprends pas pourquoi tu as un tpl

Moi non plus! big_smile


Aide les autres, ils t'aideront en retour.

Offline


Bon bah j'ai utilisé le block :

{block name="javascript-last-call"}

^^'


Aide les autres, ils t'aideront en retour.