Ne sachant pas trop ce qui pose problème, j'ai renseigné ce titre là (en me disant qu'un jour quelqu'un qui aura la même erreur tomberait sur ce topic).
J'ai une loop qui ne fonctionne plus et je n'ai aucune idée pourquoi. Elle fait partie d'un module où il y a deux tables anciennement reliées entre elles par un champ que j'ai retiré récemment (et qui se trouvait dans l'autre table, pas celle qui pose problème). La loop en question :
class DimensionGroup extends BaseLoop implements PropelSearchLoopInterface {
public $countable = true;
public $timestampable = false;
public $versionable = false;
public function getArgDefinitions()
{
return new ArgumentCollection(
Argument::createIntListTypeArgument("content", null, true)
);
}
/**
* @return CiterneoDimensionGroupQuery
*/
public function buildModelCriteria() {
$q = DimensionGroupQuery::create();
$q->filterByContentId($this->getArgValue("content"));
return $q;
}
public function parseResults(LoopResult $loopResult)
{
foreach ($loopResult->getResultDataCollection() as $dg) {
$loopResultRow = new LoopResultRow($dg);
$loopResultRow->set("ID", $dg->getId());
$loopResultRow->set("CONTENT_ID", $dg->getContentId());
$loopResultRow->set("APPLICATION", $dg->getApplication());
$loopResultRow->set("VOLUME_MIN", $dg->getVolumeMin());
$loopResultRow->set("VOLUME_MAX", $dg->getVolumeMax());
$loopResult->addRow($loopResultRow);
}
return $loopResult;
}
}
Le seul changement que cette loop a subi, c'est le rajout d'un champ "application", je n'ai pas touché aux méthodes "getArgDefinitions()" et "buildModelCriteria()".
Son utilisation dans le template ($contentId c'est le contenu Thelia dans lequel je me trouve et il a bien une valeur, pas de soucis de ce côté là) :
{loop type="dimension_group" name="content_dimension_groups" content=$contentId}
{assign "groupApplication" $APPLICATION}
{assign "min" $VOLUME_MIN}
{assign "max" $VOLUME_MAX}
<div class="dimension-group">
<div class="heading">
<div class="heading-label">
{intl l="From %min m<sup>3</sup> to %max m<sup>3</sup>" d="fo.citerneo" min=$VOLUME_MIN max=$VOLUME_MAX}
</div>
<div class="icon"></div>
<div class="clearfix"></div>
</div>
<table class="content table text-center">
<tr>
<th>{intl l="Volume" d="fo.citerneo"}</th>
<th>{intl l="Longueur" d="fo.citerneo"}</th>
<th>{intl l="Largeur" d="fo.citerneo"}</th>
<th>{intl l="Hauteur" d="fo.citerneo"}</th>
</tr>
{loop type="dimension" name="content_dimensions"}
{if $APPLICATION == $groupApplication}
{if $VOLUME <= $max && $VOLUME >= $min}
<tr>
<td>{$VOLUME} m<sup>3</sup></td>
<td>{format_number number=$LENGTH decimals="2"} m</td>
<td>{format_number number=$WIDTH decimals="2"} m</td>
<td>{format_number number=$HEIGHT decimals="2"} m</td>
</tr>
{/if}
{/if}
{/loop}
</table>
</div>
{/loop}
Et le message d'erreur entier :
Call to a member function addArguments() on null in ...\core\lib\Thelia\Core\Template\Element\BaseLoop.php on line 133
Une idée de ce qui ne va pas ?
Last edited by HeishPi (05-07-2019 09:46:46)