2009-11-10 66 views
1

我有一個'精選'屬性,它有一個是/否的選擇列表作爲管理員輸入。我認爲是和否的值是1和0,因爲它們是每隔一個是/否列表。但是,如果我嘗試並篩選使用「特色」屬性的集合,這是行不通的:如何通過YesNo類型屬性過濾集合?

$feat_attribute = $_product->getResource()->getAttribute($featuredattribute)->getSource()->getOptionId(1); 

但是,如果我有一個下拉列表中選擇「功能」屬性,寫我自己是和否,那麼它的作用如下:

$feat_attribute = $_product->getResource()->getAttribute($featuredattribute)->getSource()->getOptionId('Yes'); 

任何任何想法?我也嘗試過將值作爲真/假,是/否,開/關等,但沒有喜悅。

+0

是和否不總是1和0.有時它是0和-1,我敢打賭這裏有其他定義。 – 2009-11-11 07:52:18

+0

對不起,我應該說Magento中的其他所有是/否列表 - 我在Magento輸出1和0中使用的所有其他列表。 – 2009-11-11 09:50:24

+0

您是否能夠找到解決方案? – jayarjo 2011-08-08 13:54:24

回答

0

也許你應該使用'1'和'0'而不是整數值?

像:

$feat_attribute = $_product->getResource()->getAttribute($featuredattribute)->getSource()->getOptionId('1'); 
+0

試過了!我認爲我已經嘗試過所有可能的變化,但沒有喜悅。 – 2009-11-10 22:40:16

0

每當Magento的行爲混淆了我,我開始黑客攻擊的核心源(開發副本,當然),看看它在做什麼,爲什麼做什麼,我認爲這應該。我沒有做過與管理UI的東西,所以我不100%理解你的問題太多的出場左右,但看看在getOption功能

File: /app/code/core/Mage/Eav/Model/Entity/Attribute/Source/Abstract.php 

public function getOptionId($value) 
{ 
    foreach ($this->getAllOptions() as $option) { 
     if (strcasecmp($option['label'], $value)==0 || $option['value'] == $value) { 
      return $option['value']; 
     } 
    } 
    return null; 
} 

我想補充一些Mage::Log和/或var_dump電話在那裏爲$option['label']$option['value']的值,看看爲什麼你的比較失敗。

+0

我已經試過這個了 - 我做了一個vardump,值表示它是布爾值,但是不管它是否設置爲true,都顯示false,所以我非常難過! – 2009-11-11 09:48:20

+0

此外,我檢查了Mage_Adminhtml_Block_Catalog_Product_Helper_Form_Boolean,列出的值是0和1.這是否與我執行過濾器的方式有關?適用於下拉菜單,但可能需要以不同的方式進行是/否? – 2009-11-11 15:22:49

+0

這是一個是/否,你在界面中設置自己?當您設置它時,也許eav business缺少一些關鍵信息。這將是我的下一個猜測,如果這是我的問題。這是我如何調試它。使用mysqldump轉儲數據庫的內容(非二進制文件)更改其中一個可用的Yes/No菜單,並進行另一個數據庫轉儲。區分這兩個文件以查看更改的內容。然後,追蹤問題菜單項的數據庫的類似區域,看看有沒有看起來「錯誤」。 (含糊而乏味,但這是一個沒有記錄的系統) – 2009-11-11 17:25:19

2

這似乎是一個古老的線程,但無論如何,我只是有同樣的問題,我設置該屬性在產品列表和產品視圖中可見,然後將addAttributeToFilter(feature_product_attribute, 1)應用於是/否類型。

+0

是啊@Atabtab再次搖擺你的世界...... – Jimmy 2012-12-27 08:41:44