blog sur le développement web, jquery,css3, Magento, Symphony, php et bien d'autres choses

Archives de la catégorie ‘Magento’

Magento : comment exécuter une simple requete sql select dans votre base sql

Voici un petit mémo pour éxecuter une requête sql select dans magento


$resource   = Mage::getSingleton('core/resource');
$read       = $resource->getConnection('core_read');

$read->select('nom_de_la_table')
     ->where('colonneA=?', $paramA)
     ->where('colonneB=?', $paramB )
     ->where('colonneC=?', $paramC);

$result = $select->query();
$arRow  = $result->fetchAll();

// si j'ai des enregistrements je retourne true (par exemple)
if(count($arRow) > 0) {
      return true;
}
//sinon je retourne false
return false;

Magento : comment surcharger le core de magento pour un model, un bloc ou un helper

Pour ceux qui sont débutant en magento et qui souhaitent comprendre comment on surcharge le core de magento afin de ne pas le modifier directement voici un très bon article qui synthétise les différente méthodes de surcharge du core de magento.

Je rappelle que la surcharge permet d’étendre les fonctionnalités natives de magento sans  toucher au core (coeur) de magento.

vous apprendrez à surcharger un bloc un model, un controleur ou un helper magento et les différents type de surcharge.

vous le trouverez sur ce blog magento : http://www.magentix.fr

lien vers l’article traitant de la surcharge du core de magento

Magento : Remplir un grid avec des données qui ne proviennent pas d’un model / Grid with custom Data Collection

logo magento feed grid with custom data

Si vous possédez un tableau de données persos ne provenant pas d’un model Magento, voici un exemple pour créer une collection à partir de vos données et ainsi les afficher dans le grid.

class Namespace_Result_Grid 
extends Mage_Adminhtml_Block_Widget_Grid
{
    protected $_collection;
    /**
     * @see Mage_Adminhtml_Block_Widget_Grid::__construct()
     */
    public function __construct()
    {
        parent::__construct();
        $this->setId('rangeResultGrid');
        $this->setUseAjax(true);
        $this->setDefaultSort('code');
        $this->setDefaultDir('ASC');
        $this->setPagerVisibility(false);
        $this->setFilterVisibility(false);
    }

    /**
     * @see Mage_Adminhtml_Block_Widget_Grid::_prepareCollection()
     */
    protected function _prepareCollection()
    {
        $this->_collection = new Varien_Data_Collection();
        $this->_loadCollection();
        $this->setCollection($this->_collection);
        return parent::_prepareCollection();
    }

    protected function _loadCollection()
    {
        $object = new Varien_Object();
        $object->setData('checked','1');
        $object->setData('columna','a');
        $object->setData('columnb','b');
        $object->setData('columnc','c');
        $this->_collection->addItem($object);
    }

    protected function _prepareColumns()
    {
        $this->addColumn('in_selection', array(
                'header_css_class' => 'a-center',
                'type'      => 'checkbox',
                'name'      => 'in_selection',
                'field_name'=> 'in_selection[]',
                'value'     => '1',
                'align'     => 'center',
                'index'     => 'checked',
                'width'     =>  '20px',
        ));

        $this->addColumn(
            'fielda',
            array(
                'header' => Mage::helper('sp_grm')->__('Column A'),
                'align'     =>  'left',
                'width'     =>  '50px',
                'index'     =>  'columna',
            )
        );

        $this->addColumn(
            'fieldb',
            array(
                'header'=> Mage::helper('sp_grm')->__('Column B'),
                'align' =>  'left',
                'width' =>  '50px',
                'index' =>  'columnb',
            )
        );

        $this->addColumn(
            'fieldc',
            array(
                'header' =>  Mage::helper('sp_grm')->__('Column C'),
                'align'  =>  'left',
                'width'  =>  '50px',
                'index'  =>  'columnc',
            )
        );

        return parent::_prepareColumns();
    }
}

Zend_DB : connexion à une base de données ORACLE avec MAGENTO

Si vous possédez une version Enterprise de MAGENTO < 1.11 vous ne pouvez pas directement vous connectez à une base Oracle car pour toutes les versions infèrieures à 1.11 MAGENTO ne sait travailler qu’avec du MYSQL.

Hors pour « by-pass » cette contrainte vous pouvez déclarer un model de connexion à une base ORACLE en utilisant ZEND_DB

Voici donc un élément de réponse pour établir votre connexion à votre BDD ORACLE.

d’abord activer dans le php.ini le module php_oci8.dll (rajouter le il n’y est pas de base)

<?php

require_once('Zend/Db.php');

class NameSpace_ModuleName_Model_OracleConnexion {

    protected $db = null;
    protected $_userName = '';
    protected $_passWord = '';
    protected $_dbName   = '';
    protected $_host     = '';

    function __construct() {
        $params = array (
                    'host'     => $this->_host,
                    'username' => $this->_userName,
                    'password' => $this->_passWord,
                    'dbname'   => $this->_dbName
                  );

        $this->db = Zend_Db::factory('oracle', $params);
        //afin de vérifier que la connexion se fait bien
        // on peut faire un var dump de row par exemple
        $row = $this->db->fetchRow("select SYSDATE FROM DUAL");
 }
}

Il ne nous reste plus qu’a appeller ce model pour créer la connexion. 😉

Si vous travailler à distance en essayant d’atteindre un serveur sur un réseau quelconque, il se peut que vous n’ayez pas les droits x ou y d’accéder à cette machine. Vous pourrez alors obtenir le message suivant :

TNS:could not resolve the connect identifier specified

Afin d’être biensur que c’est une erreur en lien avec la sécurité d’accès au serveur distant je vous propose de télécharger le logiciel « database Oracle Express Edition » que vous trouverez à cette adresse

Une fois ce logiciel installé, essayez de vous connecter avec les informations qui concerne votre base (host mdp, user etc…) si encore ici vous ne pouvez pas vous connecter alors, c’est confirmé, vous n’avez pas le droit d’accéder à cette machine. Ce test permet de valider que le problème ne vient pas de la couche PHP.

Protégé : Magento : récupérer la salesorg en partant du store id

Cet article est protégé par un mot de passe. Pour le lire, veuillez saisir votre mot de passe ci-dessous :

Magento – comment uploader un fichier via un formulaire

voici comment uploader un fichier via un formulaire dans magento: ici un fichier csv:

le HTML à ajouter à mon formulaire d’upload magento

$fieldset = $form->addFieldset(Mage::helper('sp_translation')
               ->__('Import Tags'),
              array('legend'=>Mage::helper('sp_translation')
               ->__('Import Tags'),
              'is_collapsible'=>false )
);

$fieldset->addField('sp_translation_upload_form',
                    'file', 
      array(
         'name'      =>    'upload_csv',
         'required'  =>    false,
         'label'     =>    Mage::helper('sp_translation')
                          ->__("Upload the csv file :"),
      ));

$fieldset->addField('upload_csv', 'button', array(
        'name'    =>  "upload_csv",
        'onclick' =>  
                  "$('sp_translation_steps_form').submit();",
        'label'   =>  'Click button to upload the csv file.',
        'value'   =>  'Upload',
        'class'   =>  'form-button'
));

le code de mon helper pour l’upload de fichier Magento

public function importFile()
    {
      foreach($_FILES as $key => $file ) {
         if(isset($file['name']) and (file_exists($file['tmp_name']))) {
           $uploader = new Varien_File_Uploader('upload_csv');
           $uploader->setAllowedExtensions(array('csv'));
           $uploader->setAllowRenameFiles(false);
           $uploader->setFilesDispersion(false);
           $path = Mage::getBaseDir('media') . DS;
           $csvName =$file['name'];
           $uploader->save($path, $csvName);
           return array('path' => $path,'name' => $csvName);
         } 
      }
  }

j’èspere que ce code à pu vous aidez ou vous mettre sur la piste de la réussite 😉

Magento : éxécuter une requête SQL

Voici comment lancer une requête SQL dans magento sans utiliser les fonctions de la ZEND_DB.

 

1 – Connexion à la base

$write = Mage::getSingleton('core/resource')->getConnection('core_write');

2 – préparer la requête

$requete = "select c1.sku, c2.sku, cv2.value from catalog_product_super_link sl, catalog_product_entity c1, catalog_product_entity c2, catalog_product_entity_varchar cv2
                    where sl.parent_id=c1.entity_id
                    and c2.entity_id=sl.product_id
                    and cv2.entity_id=c2.entity_id
                    and cv2.store_id = '".$storeId."'
                    and cv2.attribute_id = '742'
                    and c1.sku='".$sku."'";

3 – executer la requête

$result = $write->query($requete);

3 – récupérer les résultats

$rows = $result->fetchAll();

Voila dans $rows vous avez un tableau de réponse (row). A vous de jouer!