php – 如何在Magento One Page Checkout中添加额外的字段“下拉列表”

前端之家收集整理的这篇文章主要介绍了php – 如何在Magento One Page Checkout中添加额外的字段“下拉列表”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用模块创建了以下自定义属性.

这是Customer的Dropdown-list属性.

应在结帐页面(客户作为客人/现有用户)显示客户帐户页面,客户帐户创建/注册页面,管理客户编辑页面.

目前,我可以在客户地址中的管理员部分看到属性.

我希望此属性在客户地址部分的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文件中进行修正后,它的工作正常.

To check errors in config.xml open this file in browser after editing in > any editor so it will show error.

现在该属性显示结帐页面和管理客户页面和客户我的帐户部分,但在本节中.我无法更新.需要在config.xml中添加哪些字段fot customer_account标签.

我已经在config.xml中添加

<customer_account>
   <primary_business>
       <create>1</create>
         <update>1</update>
   </primary_business>
</customer_account>
您的安装脚本代码对我来说是正确的,尽管我没有运行它来测试.

首先,确保您的安装脚本正在执行.

第二,

您可以通过导航到客户>通过管理员创建“客户属性属性>管理属性

http://awesomescreenshot.com/0b35uq1542

Magento应该在配置的区域中显示您的属性,如果它的行为方式应该.我建议您先手动创建属性并查看是否显示.如果不是,您的主题或其他扩展可能会覆盖负责呈现这些属性代码.

一旦你知道主题是渲染你想要的,你想要的,你可以创建一个沙盒脚本来加载属性获取数据.查看“管理员”创建的属性数据通常会显示我错过的内容.

这样的事情

<?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());

猜你在找的PHP相关文章