La mise à jour est requise pour le code d'attribut existant

8

Je pense mettre à jour les données is_required à "1" pour le code d'attribut "Region" existant.

select * From eav_attribute where attribute_id = '28'

Cependant, je me demande quelle est la pratique ici. Est-ce simplement la création d'une instruction SQL et la mise à jour de cet enregistrement spécifique dans le script d'installation? Ou peut-être existe-t-il un meilleur moyen.

Leongelis
la source
Quelle région attribuer? pour une commande ou une adresse?
Bijal Bhavsar
pour l'ordre et l'adresse =)
Leongelis
ok j'ai déjà ajouté du code dans la réponse ci-dessous :)
Bijal Bhavsar

Réponses:

11

Créer un script SQL pour mettre à jour l'attribut de région

$installer->startSetup();
/*** Update customer address attributes*/
$installer->updateAttribute('customer_address', 'region', 'is_required', true); 

/*** Update order address attributes*/
$installer->updateAttribute('order_address', 'region', 'is_required', true);  
$installer->endSetup();

J'espère que le code ci-dessus vous aidera

Bijal Bhavsar
la source
Pouvez-vous s'il vous plaît l'expliquer en profondeur avec un exemple.
Ami Kamboj
4

J'écris ces mises à jour, c'est simplement partager mes recherches et j'espère pouvoir aider quelqu'un là-bas.

config.xml

<config>
    <modules>
        <Package_Module>
            <version>0.0.2</version>
        </Package_Module>
    </modules>
    <global>
        <resources>
            <module_setup>
                <setup>
                    <module>Package_Module</module>
                    <!-- 
                     Create a Switchable Installer Script 
                     This class is incredibly handy in case you need different setup classes 
                     -->
                    <class>Package_Module_Model_Resource_Setup</class> 
                </setup>
            </module_setup>
        </resources>
    </global>
<config>

Classe d'installation personnalisée: Package_Module_Model_Resource_Setup

class Package_Module_Model_Resource_Setup extends Mage_Core_Model_Resource_Setup
{
    public function getCatalogResourceSetup()
    {
        return new Mage_Catalog_Model_Resource_Setup('module_setup');
    }
    public function getCustomerResourceSetup()
    {
        return new Mage_Customer_Model_Resource_Setup('module_setup');
    }
    public function getCustomerEntitySetup() 
    {
        return new Mage_Customer_Model_Entity_Setup('module_setup');
    }
}

Script de mise à niveau: mysql4-upgrade-0.0.1-0.0.2.php

<?php
/* @var $installer Package_Module_Model_Resource_Setup */
$installer = $this->getCustomerEntitySetup();

$installer->startSetup();
/*** Update customer address attributes*/
$installer->updateAttribute('customer_address', 'region', 'is_required', 1);

$installer->endSetup();

Voici un excellent article qui a partagé sur «Script d'installation commutable». Lien source: inchoo.net

Leongelis
la source
0

Créez un script de mise à jour SQL et exécutez la fonction updateAttribute.

$installer = $this;
$installer->startSetup();
$installer->updateAttribute('entity_type', 'your_attribute_id', 'required', 1);
$installer->endSetup();

Avec cette fonction, vous pouvez mettre à jour la propriété de n'importe quel attribut.

oleksii.svarychevskyi
la source
0

J'essayais certains scripts trouvés, mais l'attribut était toujours requis. Le paramètre correct est «is_required» et non «required». $installer->updateAttribute('entity_type', 'your_attribute_id', 'is_required', 1);

Antonio Pedicini
la source
0

Le code ci-dessous mettra à jour l'attribut à l'aide du script sql

$installer = $this;
$this->updateAttribute('customer_address', 'region', 'is_required' ,1); 
Digisha
la source
0

vous pouvez trouver la définition de la fonction updateAttribute () dans le fichier app\code\core\Mage\Eav\Model\Entity\setup.php

Ajay
la source