magento :如何在后台的form中添加内容可变的select filed

如下图:在product form中添加了一个attribute “spot_spotter”,这个attribute可以选择某个已注册的用户。



注意了,由于这个attribute 的内容是动态变化的,所以这个product attribute 的type是select,但却不能通过常规的方法指定option值。


最后研究出以下的解决方案:

(1)在setup文件中 给attribute添加新的属性 “frontend_input_renderer“, 指定render的block


$eav = new Mage_Eav_Model_Entity_Setup('sales_setup');

$eav->updateAttribute('catalog_product', 'spot_spotter', 'frontend_input_renderer', 'spot/adminhtml_catalog_spot_htmlselect');


(2) 然后在mdoule spot中创建 block “Xxx_Spot_Block_Adminhtml_Catalog_Spot_Htmlselect” ,内容如下:


<?php

class Xxx_Spot_Block_Adminhtml_Catalog_Spot_Htmlselect extends Varien_Data_Form_Element_Select
{
    public function getValues()
    {
        return $this->toCustomerOptionArray();
    }
    
    public function toCustomerOptionArray(){
    	$customerSelect=array();
    	
    	//add empty value
    	$customerSelect[]=array('label'=>"","value"=>"" );
    	
    	$collection=Mage::getModel('customer/customer')->getCollection()
    	           ->addAttributeToSelect("firstname")
    	           ->addAttributeToSelect("lastname");
    	           
    	foreach( $collection as $key=>$customer ){
    		$id=(int)$customer->getId();
    		$name=$customer->getData("firstname")." ".$customer->getData("lastname");
    		$customerSelect[]=array('label'=>$name,"value"=>$id);
    	}
    	
    	return $customerSelect;
    }
 
}

ok。搞定。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

newjueqi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值