इंस्टॉल स्क्रिप्ट का उपयोग करके ग्राहक के लिए बहु चयन विशेषता कैसे बनाएं?


9

मैं कई लेखों का अनुसरण कर रहा हूं, लेकिन मैं मल्टी सेलेक्ट विशेषता नहीं बना पा रहा हूं। और मैं निम्नलिखित त्रुटि प्राप्त कर रहा हूं।

a: 5: {i: 0; s: 50: "स्रोत मॉडल" "विशेषता" exinent1 "" के लिए नहीं मिला है; मैं: 1: s: 3008: "# 0 C: \ wamp \ www \ magento8 \ app / कोड \ कोर।

और मेरी स्क्रिप्ट है:

<?php
$installer = $this;
$installer->startSetup();

$setup = new Mage_Eav_Model_Entity_Setup('core_setup');

$entityTypeId     = $setup->getEntityTypeId('customer');
$attributeSetId   = $setup->getDefaultAttributeSetId($entityTypeId);
$attributeGroupId = $setup->getDefaultAttributeGroupId($entityTypeId, $attributeSetId);

$setup->addAttribute('customer', 'exinent1', array(
    'input'         => 'multiselect', 
    'type'          => 'varchar', 
    'backend'       => 'eav/entity_attribute_backend_array',
    'label'         => 'exinent1',
    'visible'       => 1,
    'required'      => 0,
    'user_defined'  => 1,
    'option'        => array (
                'value' => array('optionone' => array('First Option'),
                         'optiontwo' => array('Second Option'),
                         'optionthree' => array('Third Option'),
                         )
                        ),

));

$setup->addAttributeToGroup(
 $entityTypeId,
 $attributeSetId,
 $attributeGroupId,
 'exinent1',
 '100'
);

$oAttribute = Mage::getSingleton('eav/config')->getAttribute('customer', 'exinent1');
$oAttribute->setData('used_in_forms', array('adminhtml_customer')); 
$oAttribute->save();

$setup->endSetup();

और config.xml है:

<?xml version="1.0"?>
<config>
    <modules>
        <Exinent_Cusatt>
            <version>3.1.5.6</version>
        </Exinent_Cusatt>
    </modules>
    <global>
    <resources>
    <exinent_cusatt_setup>
        <setup>
            <module>Exinent_Cusatt</module>
        </setup>
    </exinent_cusatt_setup>
</resources>
    </global>
</config>

आपको EAV संसाधन मॉडल सेटअप करना होगा ...
इलावरसन

क्या आप किसी लेख का उल्लेख कर सकते हैं?
शिवकुमार

जवाबों:


10

मुझे लगता है कि आपने बहुत सारी गलतियाँ की हैं।

etc / config.xml

<?xml version="1.0"?>
<config>
  <modules>
    <Exinent_Cusatt>
      <version>0.1.0</version>
    </Exinent_Cusatt>
  </modules>
  <global>
    <helpers>
      <cusatt>
        <class>Exinent_Cusatt_Helper</class>
      </cusatt>
    </helpers>
    <models>
      <cusatt>
        <class>Exinent_Cusatt_Model</class>
        <resourceModel>cusatt_mysql4</resourceModel>
      </cusatt>
    </models>
    <resources>
      <customerattribute1404212233_setup>
        <setup>
          <module>Exinent_Cusatt</module>
          <class>Mage_Customer_Model_Entity_Setup</class>
        </setup>
        <connection>
          <use>core_setup</use>
        </connection>
      </customerattribute1404212233_setup>
      <customerattribute1404212233_write>
        <connection>
          <use>core_write</use>
        </connection>
      </customerattribute1404212233_write>
      <customerattribute1404212233_read>
        <connection>
          <use>core_read</use>
        </connection>
      </customerattribute1404212233_read>
    </resources>
  </global>
</config> 

सहायक / Data.php:

<?php
class Exinent_Cusatt_Helper_Data extends Mage_Core_Helper_Abstract
{
}

मोड / EAV / इकाई / गुण / स्रोत / Customeroptions14042122330.php

<?php
class Exinent_Cusatt_Model_Eav_Entity_Attribute_Source_Customeroptions14042122330 extends Mage_Eav_Model_Entity_Attribute_Source_Abstract
{
    /**
     * Retrieve all options array
     *
     * @return array
     */
    public function getAllOptions()
    {
        if (is_null($this->_options)) {
            $this->_options = array(

                array(
                    "label" => Mage::helper("eav")->__("Myoption-1"),
                    "value" =>  1
                ),

                array(
                    "label" => Mage::helper("eav")->__("Myoption-2"),
                    "value" =>  2
                ),

                array(
                    "label" => Mage::helper("eav")->__("Myoption-3"),
                    "value" =>  3
                ),

                array(
                    "label" => Mage::helper("eav")->__("Myoption-4"),
                    "value" =>  4
                ),

            );
        }
        return $this->_options;
    }

    /**
     * Retrieve option array
     *
     * @return array
     */
    public function getOptionArray()
    {
        $_options = array();
        foreach ($this->getAllOptions() as $option) {
            $_options[$option["value"]] = $option["label"];
        }
        return $_options;
    }

    /**
     * Get a text for option value
     *
     * @param string|integer $value
     * @return string
     */
    public function getOptionText($value)
    {
        $options = $this->getAllOptions();
        foreach ($options as $option) {
            if ($option["value"] == $value) {
                return $option["label"];
            }
        }
        return false;
    }

    /**
     * Retrieve Column(s) for Flat
     *
     * @return array
     */
    public function getFlatColums()
    {
        $columns = array();
        $columns[$this->getAttribute()->getAttributeCode()] = array(
            "type"      => "tinyint(1)",
            "unsigned"  => false,
            "is_null"   => true,
            "default"   => null,
            "extra"     => null
        );

        return $columns;
    }

    /**
     * Retrieve Indexes(s) for Flat
     *
     * @return array
     */
    public function getFlatIndexes()
    {
        $indexes = array();

        $index = "IDX_" . strtoupper($this->getAttribute()->getAttributeCode());
        $indexes[$index] = array(
            "type"      => "index",
            "fields"    => array($this->getAttribute()->getAttributeCode())
        );

        return $indexes;
    }

    /**
     * Retrieve Select For Flat Attribute update
     *
     * @param int $store
     * @return Varien_Db_Select|null
     */
    public function getFlatUpdateSelect($store)
    {
        return Mage::getResourceModel("eav/entity_attribute")
            ->getFlatUpdateSelect($this->getAttribute(), $store);
    }
}

एसक्यूएल / customerattribute1404212233_setup / MySQL4 से स्थापित-0.1.0.php

<?php
$installer = $this;
$installer->startSetup();


$installer->addAttribute("customer", "exinent",  array(
    "type"     => "text",
    "backend"  => "",
    "label"    => "exinent1",
    "input"    => "multiselect",
    "source"   => "cusatt/eav_entity_attribute_source_customeroptions14042122330",
    "visible"  => true,
    "required" => false,
    "default" => "",
    "frontend" => "",
    "unique"     => false,
    "note"       => ""

    ));

        $attribute   = Mage::getSingleton("eav/config")->getAttribute("customer", "exinent");


$used_in_forms=array();

$used_in_forms[]="adminhtml_customer";
        $attribute->setData("used_in_forms", $used_in_forms)
        ->setData("is_used_for_customer_segment", true)
        ->setData("is_system", 0)
        ->setData("is_user_defined", 1)
        ->setData("is_visible", 1)
        ->setData("sort_order", 100)
        ;
        $attribute->save();



$installer->endSetup();

Thats it .. बस अपने मॉड्यूल को अपना कोड पूल घोषित करने में सक्षम करें, और संख्याओं के साथ भ्रमित न करें .. <customerattribute1404212233_setup> इसकी सिर्फ यादृच्छिक संख्या आपके लिए पहचान की विशेषता नहीं है, डुप्लिकेट प्रविष्टि को रोकने के लिए। ..चोर ..!


वास्तव में मेरी बहुउपयोगी विशेषता शिपिंग की शर्तें हैं। और मैं एक ऐसा मॉड्यूल बना रहा हूं जिसमें दो कॉलम (शिपिंग टर्म, इनेबल / डिसेबल) के साथ इकाई है। इसलिए मुझे इस इकाई को शिपिंग टर्म्स विशेषता विकल्प बनाने के लिए मैप करने की आवश्यकता है। कृपया इसे कुछ दिशा दें। ।
शिवकुमार

1

हाय इलावरसन और शिवकुमार,

स्टैटिक में ऑप्शन कोड को कॉल करना अच्छा नहीं है। आपको ईव टेबल का इस्तेमाल करना होगा

$attributeId = Mage::getResourceModel('eav/entity_attribute')->getIdByCode('customer','exinent1');
 $collection =Mage::getResourceModel('eav/entity_attribute_option_collection')
                ->setPositionOrder('asc')
                ->setAttributeFilter($attributeId)
                ->setStoreFilter(0)
                ->load();

Surcemodel getAllOptions () होना चाहिए

 public function getAllOptions()
    {

 if (is_null($this->_options)) {

        attributeId = Mage::getResourceModel('eav/entity_attribute')->getIdByCode('customer','attribute_name');
 $collection =Mage::getResourceModel('eav/entity_attribute_option_collection')
                ->setPositionOrder('asc')
                ->setAttributeFilter($attributeId)
                ->setStoreFilter(0)
                ->load();
        $this->_options = $collection->toOptionArray()

    }
    }

वास्तव में मेरी बहुस्तरीय विशेषता शिपिंग की शर्तें हैं। और मैं एक मॉड्यूल (अंतिम मॉड्यूल निर्माता का उपयोग करके) बना रहा हूं, जिसमें दो कॉलम (शिपिंग टर्म, इनेबल। सक्षम) के साथ इकाई शामिल है। इसलिए मुझे इस इकाई को शिपिंग शर्तों की विशेषता विकल्प बनाने के लिए मैप करने की आवश्यकता है। कृपया इसे कुछ दिशा दें।
शिवकुमार

मैं आपको बता कुछ परिवर्तन Elavaras answer.Just .Need स्रोत मॉडल कोड में कोड बदलने है
अमित बेरा

ठीक है धन्यवाद। उदाहरण के लिए सभी विकल्प गतिशील हैं (शिपिंग शर्तें तालिका से विकल्प प्राप्त करना)। स्क्रिप्ट स्थापित करने के बाद मैं कुछ रिकॉर्ड्स (शिपिंग शर्तें) को अक्षम कर देता हूं। क्योंकि यह ग्राहक की खाता जानकारी में प्रतिबिंबित होगा?
शिवकुमार
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.