Détail du message 77581.19

Message numéro 19 dans le sujet Envoi d'un document spécifique par request à un block.

  • 77581.19 en réponse à 77581.18 écrit par mamous

    22/04/2013 10:49


    Mathias
    Rang : Expert
    bon ben a priori dans ce cas ce n'est pas très compliqué...

    Toute la logique va se retrouver dans l'action (php) de ton block, qui va ensuite en fonction du résultat afficher la vue (html) souhaitée.

    A savoir que ce qui te manque, au vu des échanges précédents, c'est comment récupérer des instances de documents en base.

    Imaginons que tu as les éléments suivants :
    - module = monModule
    - document = monDoc
    - block = monBlock

    Le code de l'action de ton block va ressembler à ça :
    /**
     * monModule_BlockMonBlockAction
     * @package modules.monmodule.lib.blocks
     */
    class monModule_BlockMonBlockAction extends website_BlockAction
    {
    	/**
    	 * @param f_mvc_Request $request
    	 * @param f_mvc_Response $response
    	 * @return String
    	 */
    	public function execute($request, $response)
    	{
              //on récupère tous les documents
    	  $monDocs = $this->getMySpecificDocuments();
              //on boucle sur les documents
              //il est préférable de tester avant que tu as bien des docs (pas fait ici)
              foreach($monDocs as $monDoc)
              {
                 //on valide le filtre et le boolean
                  if($this->checkMyFilterAndMyBoolean($mondoc))
                  {
                     //dès qu'une instance valide le filtre on renvoi la vue success
                     return website_BlockView::SUCCESS;
                  }
             }
             //sinon on n'affiche pas la vue du block
    	return website_BlockView::NONE;
       }
      
      /**
       * Ceci va récupérer toutes les instances publiées de monDoc de monModule
       * @return <monModule_persistendocument_mondoc> array
       */
      public function getMySpecificDocuments()
      {
        $query = monModule_MonDocService::getinstance()->createQuery();
        $query->add(Restrictions::published());
        
        return $query->find();
      }
      /**
       * ici ton code qui valide tes filtres et ton boolean (à toi de voir quels sont les contrôles à faire sur ce document)
       * @return boolean
       */
      public function checkMyFilterAndMyBoolean($monDoc)
      {
        
      }
    }

    Édité par Mathias 22/04/2013 10:50


    Développe sous linux Ubuntu 12.04 LTS Desktop
    Projet ecommerce core 3.6.7
 
1359 membres
Aucun membre connecté