Metamodels : afficher la liste d'un mm lié

Comment utiliser Contao
charled
Membre
Messages : 382
Inscription : 14 Juin 2008 15:54
Localisation : Au pied du Luberon…

Metamodels : afficher la liste d'un mm lié

Messagepar charled » 07 Mars 2016 19:05

Bonsoir à tous et notamment ceux qui testent ou ont testé MM,

J'ai deux metamodels :
- mm_evenements
- mm_rencontres
mm_rencontres est lié à mm_evenements par l'attribut select lienRencontreEvenement. Il peut donc y avoir plusieurs rencontres pour 1 événement.

Sur la page détail de l'événement, j'ai besoin d'afficher la liste des rencontres liées. Avec catalog, on utilisait le module catalog Referenced qui faisait le job.

Sous MM, je pensais pouvoir le faire grâce à un filtre avec SQL personnalisé mais je sais pas comment introduire dans la requête SQL l'id de l'événement affiché.

Sur le forum EN, on m'a indiqué l'exemple suivant : http://de.contaowiki.org/MetaModels_Beispiel:_Referenced_items que j'ai essayé d'adapter. Voici le code :

Code : Tout sélectionner

<?php
function getRencontresParEvenement($strAlias, $format='html5')
{
  $objMetaModel = MetaModelFactory::byTableName('mm_rencontres');
  $objFilter = $objMetaModel->prepareFilter(16, array());
  $objFilter->addFilterRule(new MetaModelFilterRuleSearchAttribute($objMetaModel->getAttribute('lienRencontreEvenement'), $strAlias, $objMetaModel->getAvailableLanguages()));
  $objItems = $objMetaModel->findByFilter($objFilter);
  return $objItems->parseAll($format, $objMetaModel->getView(3));
}
?>
 
<div class="evenement_detailview">
  <?php foreach ($this->data as $arrItem): ?>
 
  <div class="detailview">
    <h1 class="ce_headline"><?php echo $arrItem['text']['intitule']; ?></h1>
    <p class="description"><?php echo $arrItem['text']['description']; ?></p>
  </div>
 
  <div class="rencontres_liees">
    <h2>Projekte</h2>
    <?php foreach (getRencontresParEvenement($arrItem['raw']['alias']) as $arrProjects): ?>
 
    <div class="rencontre">
      <h3>
        <a href="{{env::path}}<?php echo $arrProjects['jumpTo']['url']; ?>">
          <?php echo $arrProjects[$this->getFormat()]['project_name']; ?>
        </a>
      </h3>
      <?php echo $arrProjects[$this->getFormat()]['description']; ?>
   
    </div>
 
  <?php endforeach; ?>
  </div>
 
  <?php endforeach; ?>
</div>


Mais j'obtiens une jolie erreur :
Warning: Invalid argument supplied for foreach() in templates/ce_metamodel_list_test_evenement.html5 on line 13
#0 templates/ce_metamodel_list_test_evenement.html5(13): __error(2, 'Invalid argumen...', '/Users/pro/CLIE...', 13, Array)
#1 system/modules/core/library/Contao/BaseTemplate.php(88): include('/Users/pro/CLIE...')
#2 system/modules/core/library/Contao/Template.php(277): Contao\BaseTemplate->parse()
#3 system/modules/core/classes/FrontendTemplate.php(46): Contao\Template->parse()
#4 system/modules/core/classes/Hybrid.php(258): Contao\FrontendTemplate->parse()
#5 composer/vendor/metamodels/core/src/MetaModels/FrontendIntegration/MetaModelHybrid.php(102): Contao\Hybrid->generate()
#6 composer/vendor/metamodels/core/src/MetaModels/FrontendIntegration/HybridList.php(54): MetaModels\FrontendIntegration\MetaModelHybrid->generate()
#7 system/modules/core/library/Contao/Controller.php(476): MetaModels\FrontendIntegration\HybridList->generate()
#8 system/modules/core/modules/ModuleArticle.php(213): Contao\Controller::getContentElement(Object(Contao\ContentModel), 'main')
#9 system/modules/core/modules/Module.php(283): Contao\ModuleArticle->compile()
#10 system/modules/core/modules/ModuleArticle.php(67): Contao\Module->generate()
#11 system/modules/core/library/Contao/Controller.php(409): Contao\ModuleArticle->generate(false)
#12 system/modules/core/library/Contao/Controller.php(269): Contao\Controller::getArticle(Object(Contao\ArticleModel), false, false, 'main')
#13 system/modules/core/pages/PageRegular.php(133): Contao\Controller::getFrontendModule('0', 'main')
#14 system/modules/core/controllers/FrontendIndex.php(267): Contao\PageRegular->generate(Object(Contao\PageModel), true)
#15 index.php(20): Contao\FrontendIndex->run()
#16 {main}


Ça doit être relativement simple pour qui maîtrise sql et/ou php mais j'avoue que je tourne en rond. J'ai posé la question aussi sur le forum EN mais ça ne fait plusieurs que je pose et j'avoue que le faire un peu en français est reposant… ;-)

Merci de votre aide.

Revenir vers « Utilisation de Contao »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité