THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

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

Offline


Bonjour,

De retour apres plusieurs.... d'absence

Ce n'est peut etre pas le bon endroit pour poster mon pb
installation sur Synology 6.2   php5.6
L'installation s'est bien passé
Je rencontre un probleme avec l'erreur suivante

    
        
        
        
            /* Copyright (c) 2010, Yahoo! Inc. All rights reserved. Code licensed under the BSD License: http://developer.yahoo.com/yui/license.html */
            html{color:#000;background:#FFF;}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}li{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}abbr,acronym{border:0;font-variant:normal;}sup{vertical-align:text-top;}sub{vertical-align:text-bottom;}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit;}input,textarea,select{*font-size:100%;}legend{color:#000;}

            html { background: #eee; padding: 10px }
            img { border: 0; }
            #sf-resetcontent { width:970px; margin:0 auto; }
                        .sf-reset { font: 11px Verdana, Arial, sans-serif; color: #333 }
            .sf-reset .clear { clear:both; height:0; font-size:0; line-height:0; }
            .sf-reset .clear_fix:after { display:block; height:0; clear:both; visibility:hidden; }
            .sf-reset .clear_fix { display:inline-block; }
            .sf-reset * html .clear_fix { height:1%; }
            .sf-reset .clear_fix { display:block; }
            .sf-reset, .sf-reset .block { margin: auto }
            .sf-reset abbr { border-bottom: 1px dotted #000; cursor: help; }
            .sf-reset p { font-size:14px; line-height:20px; color:#868686; padding-bottom:20px }
            .sf-reset strong { font-weight:bold; }
            .sf-reset a { color:#6c6159; cursor: default; }
            .sf-reset a img { border:none; }
            .sf-reset a:hover { text-decoration:underline; }
            .sf-reset em { font-style:italic; }
            .sf-reset h1, .sf-reset h2 { font: 20px Georgia, "Times New Roman", Times, serif }
            .sf-reset .exception_counter { background-color: #fff; color: #333; padding: 6px; float: left; margin-right: 10px; float: left; display: block; }
            .sf-reset .exception_title { margin-left: 3em; margin-bottom: 0.7em; display: block; }
            .sf-reset .exception_message { margin-left: 3em; display: block; }
            .sf-reset .traces li { font-size:12px; padding: 2px 4px; list-style-type:decimal; margin-left:20px; }
            .sf-reset .block { background-color:#FFFFFF; padding:10px 28px; margin-bottom:20px;
                -webkit-border-bottom-right-radius: 16px;
                -webkit-border-bottom-left-radius: 16px;
                -moz-border-radius-bottomright: 16px;
                -moz-border-radius-bottomleft: 16px;
                border-bottom-right-radius: 16px;
                border-bottom-left-radius: 16px;
                border-bottom:1px solid #ccc;
                border-right:1px solid #ccc;
                border-left:1px solid #ccc;
                word-wrap: break-word;
            }
            .sf-reset .block_exception { background-color:#ddd; color: #333; padding:20px;
                -webkit-border-top-left-radius: 16px;
                -webkit-border-top-right-radius: 16px;
                -moz-border-radius-topleft: 16px;
                -moz-border-radius-topright: 16px;
                border-top-left-radius: 16px;
                border-top-right-radius: 16px;
                border-top:1px solid #ccc;
                border-right:1px solid #ccc;
                border-left:1px solid #ccc;
                overflow: hidden;
                word-wrap: break-word;
            }
            .sf-reset a { background:none; color:#868686; text-decoration:none; }
            .sf-reset a:hover { background:none; color:#313131; text-decoration:underline; }
            .sf-reset ol { padding: 10px 0; }
            .sf-reset h1 { background-color:#FFFFFF; padding: 15px 28px; margin-bottom: 20px;
                -webkit-border-radius: 10px;
                -moz-border-radius: 10px;
                border-radius: 10px;
                border: 1px solid #ccc;
            }
        
    
    
                    
                Whoops, looks like something went wrong.
                                        
                            1/1
                            FatalErrorException in TemplateQuery.php line 817:
                            Compile Error: Cannot redeclare Thelia\Model\Base\TemplateQuery::filterByFeature()
                        
                        
                            
        in TemplateQuery.php line 817
       at ClassLoader->loadClass() in DebugClassLoader.php line 18
       at spl_autoload_call() in DebugClassLoader.php line 18
        in DebugClassLoader.php line 169
       at DebugClassLoader->loadClass() in BaseLoop.php line 55
       at spl_autoload_call() in BaseLoop.php line 55
       at ProductTemplate->buildModelCriteria() in BaseLoop.php line 512
       at BaseLoop->exec() in TheliaLoop.php line 174
       at TheliaLoop->theliaLoop() in 4d151c14d1fe2f6a0eb12aba125892d52e84346a_0.file.form_comparator.html.php line 85
       at content_5f43dc99e0d0d5_04894370() in smarty_template_resource_base.php line 123
       at Smarty_Template_Resource_Base->getRenderedTemplateCode() in smarty_template_compiled.php line 114
       at Smarty_Template_Compiled->render() in smarty_internal_template.php line 216
       at Smarty_Internal_Template->render() in smarty_internal_template.php line 385
       at Smarty_Internal_Template->_subTemplateRender() in 2628706f263fa5632064718f50883fa49d010a94_0.file.product-comparisons.html.php line 190
       at Block_19862056305f43dc9888ed26_08453185->callBlock() in smarty_internal_runtime_inheritance.php line 248
       at Smarty_Internal_Runtime_Inheritance->callBlock() in smarty_internal_runtime_inheritance.php line 184
       at Smarty_Internal_Runtime_Inheritance->process() in smarty_internal_runtime_inheritance.php line 186
       at Smarty_Internal_Runtime_Inheritance->process() in smarty_internal_runtime_inheritance.php line 156
       at Smarty_Internal_Runtime_Inheritance->instanceBlock() in 08908897d24cef22de20a6ae8f889370e618b810_0.file.admin-layout.tpl.php line 292
       at content_5f43dc98c815e5_97520410() in smarty_template_resource_base.php line 123
       at Smarty_Template_Resource_Base->getRenderedTemplateCode() in smarty_template_compiled.php line 114
       at Smarty_Template_Compiled->render() in smarty_internal_template.php line 216
       at Smarty_Internal_Template->render() in smarty_internal_template.php line 385
       at Smarty_Internal_Template->_subTemplateRender() in smarty_internal_runtime_inheritance.php line 126
       at Smarty_Internal_Runtime_Inheritance->endChild() in 2628706f263fa5632064718f50883fa49d010a94_0.file.product-comparisons.html.php line 65
       at content_5f43dc98a5ce46_53220288() in smarty_template_resource_base.php line 123
       at Smarty_Template_Resource_Base->getRenderedTemplateCode() in smarty_template_compiled.php line 114
       at Smarty_Template_Compiled->render() in smarty_internal_template.php line 216
       at Smarty_Internal_Template->render() in smarty_internal_templatebase.php line 232
       at Smarty_Internal_TemplateBase->_execute() in smarty_internal_templatebase.php line 116
       at Smarty_Internal_TemplateBase->fetch() in SmartyParser.php line 503
       at SmartyParser->internalRenderer() in SmartyParser.php line 529
       at SmartyParser->render() in BaseAdminController.php line 390
       at BaseAdminController->renderRaw() in BaseAdminController.php line 346
       at BaseAdminController->render() in ProductComparisonController.php line 194
       at ProductComparisonController->renderListTemplate() in AbstractCrudController.php line 282
       at AbstractCrudController->renderList() in AbstractCrudController.php line 297
       at AbstractCrudController->defaultAction() in HttpKernel.php line 135
       at call_user_func_array:{/volume1/web/www/production2.4/core/vendor/symfony/http-kernel/HttpKernel.php:135}() in HttpKernel.php line 135
       at HttpKernel->handleRaw() in HttpKernel.php line 57
       at HttpKernel->handle() in TheliaHttpKernel.php line 76
       at TheliaHttpKernel->handle() in BackOfficePathMiddleware.php line 106
       at BackOfficePathMiddleware->handle() in ParamInitMiddleware.php line 87
       at ParamInitMiddleware->handle() in SessionMiddleware.php line 80
       at SessionMiddleware->handle() in StackedHttpKernel.php line 23
       at StackedHttpKernel->handle() in Kernel.php line 183
       at Kernel->handle() in index_dev.php line 45
       at {main}() in index_dev.php line 0         

Quelqu'un aurait rencontre ce pb ? une solution ? je ne trouve rien sur le net ( enfin rien ne marche )

Grand merci d'avance

Edit: je n'ai pas l'erreur avec Thelia2.3.3 sur le meme synology 6.2 php5.6

Last edited by zzuutt (27-08-2020 09:27:47)

Offline


j'obtiens cette erreur avec cette boucle

{loop type="product-template" name="name-template" id=$TEMPLATE_ID}{$NAME}{/loop}

Offline

Offline


Merci ROADSTER31  mais pareil
j'ai désactivé le cache php sur le serveur idem
toujours cette erreur

j'obtiens la même erreur avec la boucle

                    {loop type="feature" name="name-feature" id=$FEATURE_ID}
                    {$TITLE}
                    {/loop}

si je remplace la premiere boucle

{loop type="product-template" name="name-template" id={$TEMPLATE_ID}}{$NAME}{/loop}

par

{loop type="product" name="name-template" id={$TEMPLATE_ID}}{$TITLE}{/loop}

pas d'erreur

Last edited by zzuutt (25-08-2020 10:18:54)

Offline


Ça veut alors dire que tu as des doublons de fichiers.


OpenStudio Toulouse

Offline


en php 5.6 pas d'erreur
en phph 7 erreur

je vais chercher mais je ne pense pas avoir de doublons

Offline


en php 5.6 pas d'erreur
en phph 7 erreur

Ce n'est pas ce que tu as dit de prime abord:

Edit: je n'ai pas l'erreur avec Thelia2.3.3 sur le meme synology 6.2 php5.6


OpenStudio Toulouse

Offline


Autant pour moi, Tu as raison
Thelia 2.3.3 php5.6   pas d'erreur
Thelia 2.4.1 php 5.6 ou 7.2  erreur

je vais chercher si j'ai des doublons

Offline


Je suis reparti de zero
j'ai tout réinstallé
Thelia 2.3.3 + php5.6   Ok
Thelia 2.4.0 + php5.6  erreur sur la page Edit product

<h2 class="block_exception clear_fix">
 <span class="exception_counter">1/1</span>
<span class="exception_title"><abbr title="Symfony\Component\Debug\Exception\FatalErrorException">FatalErrorException</abbr> in <a title="/volume1/web/www/production2.4/cache/propel/model/Thelia/Model/Base/TemplateQuery.php line 817" ondblclick="var f=this.innerHTML;this.innerHTML=this.title;this.title=f;">TemplateQuery.php line 817</a>:</span>
<span class="exception_message">Compile Error: Cannot redeclare Thelia\Model\Base\TemplateQuery::filterByFeature()</span>
</h2>

Je ne trouve pas de doublon  roll

Offline


Je ne trouve pas de doublons de fichiers

Mais dans le cache propel  la class FeatureQuery   -> Thelia\Model\Base\FeatureQuery.php
je retrouve 2 fois la fonction  lignes 976 et 993

    /**
     * Filter the query by a related Template object
     * using the product_comparison table as cross reference
     *
     * @param Template $template the related object to use as filter
     * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
     *
     * @return ChildFeatureQuery The current query, for fluid interface
     */
    public function filterByTemplate($template, $comparison = Criteria::EQUAL)
    {
        return $this
            ->useProductComparisonQuery()
            ->filterByTemplate($template, $comparison)
            ->endUse();
    }

idem chacxhe propel class TemplateQuery    -> Thelia\Model\Base\TemplateQuery.php
la fonction est dupliquée  lignes 791  et 888

        /**
     * Filter the query by a related Feature object
     * using the product_comparison table as cross reference
     *
     * @param Feature $feature the related object to use as filter
     * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
     *
     * @return ChildTemplateQuery The current query, for fluid interface
     */
    public function filterByFeature($feature, $comparison = Criteria::EQUAL)
    {
        return $this
            ->useProductComparisonQuery()
            ->filterByFeature($feature, $comparison)
            ->endUse();
    }

dans le cache propel Feature.php
duplication

    protected $combinationCollTemplateIds;

    /**
     * @var bool
     */
    protected $combinationCollTemplateIdsPartial;

    /**
     * @var        ObjectCollection|ChildTemplate[] Cross Collection to store aggregation of ChildTemplate objects.
     */

Je ne comprends pas comment cela se fait ?????  pb connu ?
Le cache propel génère plein de duplication
Comment trouver la source de cette duplication ?
cela concerne que quelques fonctions ou declaration

Last edited by zzuutt (25-08-2020 14:39:03)

Offline


En 2.4 les classes de base Propel sont générées dans le cache.

Tu as quoi comme modules actifs ?


OpenStudio Toulouse

Offline


roadster31 wrote:

En 2.4 les classes de base Propel sont générées dans le cache.

Tu as quoi comme modules actifs ?

voici tous les modules actifs
md66.png

Offline


Il y a en a pas mal que je ne connais pas.

Parmis eux, il y en a sans doute qui référencent les tables qui posent problème, je suppose.


OpenStudio Toulouse

Offline


Bonjour,

J'ai passé tous les modules
celui qui pose problème c'est "ProductComparason"  lien sur GitHub
il est lié aux 2 tables

CREATE TABLE IF NOT EXISTS `product_comparison`
(
    `id` INTEGER NOT NULL AUTO_INCREMENT,
    `feature_id` INTEGER NOT NULL,
    `template_id` INTEGER NOT NULL,
    `position` INTEGER,
    `created_at` DATETIME,
    `updated_at` DATETIME,
    PRIMARY KEY (`id`),
    INDEX `idx_product_comparison_id` (`feature_id`),
    INDEX `fk_product_comparison_idx` (`template_id`),
    INDEX `idx_product_comparison_template_id_position` (`template_id`, `position`),
    CONSTRAINT `fk_product_comparison_id`
        FOREIGN KEY (`feature_id`)
        REFERENCES `feature` (`id`)
        ON UPDATE RESTRICT
        ON DELETE CASCADE,
    CONSTRAINT `fk_product_comparison`
        FOREIGN KEY (`template_id`)
        REFERENCES `template` (`id`)
        ON UPDATE RESTRICT
        ON DELETE CASCADE
) ENGINE=InnoDB;

il faut que je recherche quoi exactement.... pour empêcher cette duplication
J'essaie de comprendre le fonctionnement du cache.....

Last edited by zzuutt (26-08-2020 10:52:16)

Offline


Bonjour,

Je ne comprends pas la duplication et surtout quoi modifier
une piste ?

Merci

Offline


En 2.4, la génération du modèle global de Thelia prend en compte les schema.xml des modules, de manière à prendre en compte les FK des modules et permettre de créer dans les classes de base les méthodes qui permettent d'accéder aux tables des modules.

Le schema.xml du module a l'ai correct, mais tu crées 2 indexes inutiles, car automatiquement créés pour les FK

             <index name="idx_product_comparison_id">
                <index-column name="feature_id" />
            </index>
            <index name="fk_product_comparison_idx">
                <index-column name="template_id" />
            </index>

Essaie de les enlever pour voir, c'est ces indexes qui semblent perturber la génération du modèle.


OpenStudio Toulouse

Offline


Merci ROADSTER31
Mais hélas cela n'a rien changé
J'ai supprimé tous les INDEX
toujours la duplication
dans Model/Base/FeatureQuery.php

    /**
     * Filter the query by a related Template object
     * using the product_comparison table as cross reference
     *
     * @param Template $template the related object to use as filter
     * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
     *
     * @return ChildFeatureQuery The current query, for fluid interface
     */
    public function filterByTemplate($template, $comparison = Criteria::EQUAL)
    {
        return $this
            ->useProductComparisonQuery()
            ->filterByTemplate($template, $comparison)
            ->endUse();
    }

    /**
     * Filter the query by a related Template object
     * using the feature_template table as cross reference
     *
     * @param Template $template the related object to use as filter
     * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
     *
     * @return ChildFeatureQuery The current query, for fluid interface
     */
    public function filterByTemplate($template, $comparison = Criteria::EQUAL)
    {
        return $this
            ->useFeatureTemplateQuery()
            ->filterByTemplate($template, $comparison)
            ->endUse();
    }

et dans Model/Base/TemplateQuery.php

    /**
     * Filter the query by a related Feature object
     * using the product_comparison table as cross reference
     *
     * @param Feature $feature the related object to use as filter
     * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
     *
     * @return ChildTemplateQuery The current query, for fluid interface
     */
    public function filterByFeature($feature, $comparison = Criteria::EQUAL)
    {
        return $this
            ->useProductComparisonQuery()
            ->filterByFeature($feature, $comparison)
            ->endUse();
    }

    /**
     * Filter the query by a related Feature object
     * using the feature_template table as cross reference
     *
     * @param Feature $feature the related object to use as filter
     * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
     *
     * @return ChildTemplateQuery The current query, for fluid interface
     */
    public function filterByFeature($feature, $comparison = Criteria::EQUAL)
    {
        return $this
            ->useFeatureTemplateQuery()
            ->filterByFeature($feature, $comparison)
            ->endUse();
    }

et dans Feature.php

Offline


En fait après investigations c'est le isCrossRef qui pose problème.


OpenStudio Toulouse

Offline


Merci ROADSTER31

J'ai les refait 2 fois
schema.xml

        <table isCrossRef="true" name="product_comparison" namespace="ProductComparison\Model">
            <column autoIncrement="true" name="id" primaryKey="true" required="true" type="INTEGER" />
            <column name="feature_id" required="true" type="INTEGER" />
            <column name="template_id" required="true" type="INTEGER" />
            <column name="position" type="INTEGER" />
            <foreign-key foreignTable="feature" name="fk_product_comparison_id" onDelete="CASCADE" onUpdate="RESTRICT">
                <reference foreign="id" local="feature_id" />
            </foreign-key>
            <foreign-key foreignTable="template" name="fk_product_comparison" onDelete="CASCADE" onUpdate="RESTRICT">
                <reference foreign="id" local="template_id" />
            </foreign-key>
            <behavior name="timestampable" />
        </table>

Vidé le cache, désactivé le module
Vidé le cache réactivé le module

toujours la même erreur

Whoops, looks like something went wrong.
                                        
                            1/1
                            FatalErrorException in TemplateQuery.php line 817:
                            Compile Error: Cannot redeclare Thelia\Model\Base\TemplateQuery::filterByFeature()

Offline


Chez nous retirer isCrossRef ça a résolu le problème. Fais bien tout dans l'ordre, en t'assurant que tout est bien OK a chaque étape.


OpenStudio Toulouse

Offline


MERCI ROADSTER31

j'ai supprimé isCrossRef="true"

TOP !!! GRAND MERCI !!!