Question

J'ai créé un module de tri personnalisé que j'essaie de déboguer.Je suis curieux de savoir s'il est possible d'afficher ces informations quelque part dans les pages de mon catalogue (par ex.app/code/design/package/theme/template/catalog/product/list.phtml).Voici la partie observateur de mon module personnalisé où je définis le setOrder :

<?php

class MyExtension_CustomSort_Model_Observer
{
    public function onLoadCollection($observer)
    {
        $collection = $observer->getCollection();

        $collection->setOrder('created_at', 'desc');
            ->setOrder('name', 'asc');

        return true;
    }
}

J'ai essayé de faire écho et d'utiliser print_r pour afficher mes informations, mais il semble que je me trompe.Aucun conseil?Le résultat final serait pour moi de voir "created_at" et "name" quelque part en haut de la page.

Était-ce utile?

La solution

Mieux encore, enregistrez la requête de la collection dans un fichier séparé.Ou vous pouvez également simplement faire ce que mbalparda a suggéré.L'instruction de commande n'est incorporée que lorsque la collection est chargée.

Pour examiner la requête complète,

// After what you have posted..
$collection->load(true);   // ordering is set when the collection is loaded; see ref.
Mage::log($collection->getSelect()->__toString());  // prints the query to var/log/system.log

Note:Assurez-vous de supprimer ->load(true) une fois le débogage terminé.

Référence: https://stackoverflow.com/questions/9207240/get-collection-query-string

Autres conseils

je ne pense pas qu'un die() la déclaration est un bon choix.Si vous voulez voir comment votre setOrder se comporte dans la requête Magento générée pour vous, vous pouvez utiliser le $collection->getSelect() méthode pour obtenir un dump de la requête SQL.Vous pouvez ensuite faire écho à la sortie de getSelect() sur votre écran ou peut-être enregistrez-le dans le journal système Magento en utilisant Mage::log('My query: '.$collection->getSelect());.

Si vous rencontrez des problèmes avec le name et created_at attributs à apparaître dans votre requête, vous devrez peut-être les ajouter à la requête en utilisant $collection->addAttributeToSelect(array('name', 'created_at')).

Est-ce que ça marche pour toi?

Encore mieux encore, forcer le journal de la collection dans la page de journal que vous souhaitez.Ou vous pouvez simplement faire ce que MusicLiftsme suggère également.

Mage::log($collection->getSelect()->__toString(),null,'thisfile.log',true); // prints the query to var/log/thisfile.log

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top