Как добавить дополнительное поле "Раскрывающийся список" в Magento One Page Checkout

Я создал следующий пользовательский атрибут, используя модули.

Это атрибут Dropdown-list для клиента.

Он должен отображаться на странице проверки (Клиент как Гость/Существующий пользователь) Страница учетной записи клиента, Страница создания/регистрации учетной записи клиента, Страница редактирования клиента администратора.

В настоящее время я могу видеть атрибут в разделе Admin в адресе клиента.

Я хочу, чтобы этот атрибут отображался на странице Checkout также в разделе адреса клиента.

У меня есть файл billing.phtml, так как там есть другой атрибут, но я не уверен. Как написать собственный атрибут в billing.phtml в качестве раскрывающегося списка. и какой другой файл необходимо обновить, чтобы просмотреть этот атрибут. Пожалуйста, дайте мне знать, где я делаю неправильно или что-то еще, чтобы добавить в мой код.

Любое руководство будет оценено по достоинству.

Ниже мой код -

Имя файла - /app/code/local/PS/PB/etc/config.xml

<?xml version="1.0"?>
<config>
  <modules>
    <PS_PB>
      <version>0.1.0</version>
    </PS_PB>
  </modules>
  <global>
    <helpers>
      <pb>
        <class>PS_PB_Helper</class>
      </pb>
    </helpers>
    <models>
      <pb>
        <class>PS_PB_Model</class>
        <resourceModel>pb_mysql4</resourceModel>
      </pb>
    </models>
    <resources>
      <customerattribute1462360584_setup>
        <setup>
          <module>PS_P</module>
          <class>Mage_Customer_Model_Entity_Setup</class>
        </setup>
        <connection>
          <use>core_setup</use>
        </connection>
      </customerattribute1462360584_setup>
      <customerattribute1462360584_write>
        <connection>
          <use>core_write</use>
        </connection>
      </customerattribute1462360584_write>
      <customerattribute1462360584_read>
        <connection>
          <use>core_read</use>
        </connection>
      </customerattribute1462360584_read>
    </resources>
  </global>
</config> 

Файл - /app/code/local/PS/PB/Helper/Data.php

<?php
class PS_PB_Helper_Data extends Mage_Core_Helper_Abstract
{
}

Файл - /app/code/local/PS/PB/Model/Eav/Entity/Attribute/Source/Customeroptions14623605840.php

<?php
class PS_PB_Model_Eav_Entity_Attribute_Source_Customeroptions14623605840 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")->__("End Consumer / DIY"),
                    "value" =>  1
                ),

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

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

            );
        }
        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);
    }
}

Файл - /app/code/local/PS/PB/sql/customerattribute1462360584_setup

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


    $installer->addAttribute("customer_address", "cstpb",  array(
        "type"     => "int",
        "backend"  => "",
        "label"    => "Primary Business",
        "input"    => "select",
        "source"   => "pb/eav_entity_attribute_source_customeroptions14623605840",
        "visible"  => true,
        "required" => true,
        "default" => "",
        "frontend" => "",
        "unique"     => false,
        "note"       => ""

        ));

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


    $used_in_forms=array();
    $used_in_forms[]="adminhtml_customer";
    $used_in_forms[]="checkout_register";
    $used_in_forms[]="customer_account_create";
    $used_in_forms[]="customer_account_edit";
    $used_in_forms[]="adminhtml_checkout";
    $used_in_forms[]="adminhtml_customer_address";
    $used_in_forms[]="customer_register_address";
    $used_in_forms[]="customer_address_edit";
            $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();

Файл XML - /app/etc/modules/PS_PB.xml

<?xml version="1.0"?>
<config>
  <modules>
    <PS_PB>
      <active>true</active>
      <codePool>local</codePool>
      <version>0.1.0</version>
    </PS_PB>
  </modules>
</config>

Обновление

После внесения исправления в файле config.xml он работает нормально.

Чтобы проверить ошибки в config.xml, откройте этот файл в браузере после редактирования в > любом редакторе, чтобы он отображал ошибку.

Теперь атрибут показывает страницу проверки и страницу клиента клиента и раздел "Моя учетная запись", но в этом разделе. Я не могу его обновить. Какие поля нужно добавить в теги_по_таблицы config.xml fot.

Я добавил это в config.xml

<customer_account>
   <primary_business>
       <create>1</create>
         <update>1</update>
   </primary_business>
</customer_account>

Ответ 1

Ваш код установки script отображается мне прямо, хотя я не запускал его для тестирования.

Сначала убедитесь, что ваша установка script выполняется.

Во-вторых,

Вы можете создать "атрибут клиента" через администратора, перейдя к "Клиенты" > "Атрибуты" > "Управление атрибутами".

http://awesomescreenshot.com/0b35uq1542

Magento должен отображать ваш атрибут в настроенных областях, если он ведет себя так, как должен. Я бы рекомендовал начать вручную, создав атрибут и увидев, появляется ли он. Если это не так, возможно, что ваша тема или другие расширения переопределили код, ответственный за предоставление этих атрибутов.

Как только вы узнаете, что тема представляет собой то, что вы хотите, где вы хотите, вы можете создать песочницу script, чтобы загрузить свой атрибут и получить данные. Глядя на созданные пользователем атрибуты "Admin", я обычно показываю, что я пропустил.

Что-то вроде этого:

<?php

require_once('app/Mage.php');
Mage::app()->setCurrentStore('0');
$attribute_id = 9999; // YOU ADMIN CREATED ATTRIBUTE ID
$attributeModel = Mage::getModel('eav/attribute')->load($attribute_id);
var_dump($attributeModel->getData());