这是Customer的Dropdown-list属性.
应在结帐页面(客户作为客人/现有用户)显示客户帐户页面,客户帐户创建/注册页面,管理客户编辑页面.
我已经检查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());