Проверьте, является ли атрибут атрибутом клиента или атрибутом адреса клиента - PullRequest
1 голос
/ 16 декабря 2011

У меня есть следующий код, где мне нужно проверить, является ли данный атрибут атрибутом клиента или атрибутом адреса клиента.Как это проверить?

private $custom_columns = array();</p> <pre><code>public function __construct() { parent::__construct(); $this->setId('customerGrid'); $this->setUseAjax(true); $this->setDefaultSort('email'); $this->setDefaultLimit('200'); $this->setSaveParametersInSession(true); $attributeIds = Mage::getStoreConfig('sectionname/group/field'); $this->custom_columns = array($attributeIds); }

$attributeIds возвращать коды атрибутов, такие как улица , если я выбираю адрес улицы, пол , если явыберите пол и так далее.Теперь, какое условие следует поставить, чтобы узнать, является ли данный атрибут атрибутом клиента или адреса.

// Prepare Collection addition to store custom fields
foreach ($this->custom_columns as $col) 
{
   //Some Condition if its a Customer attribute
   collection->addAttributeToSelect($col);  
   //else some condition if its a Customer address attribute
   $collection->joinAttribute($col, "customer_address/$col", 'default_billing', null, 'left');
 }
 $this->setCollection($collection);
 return parent::_prepareCollection();
}
</code>

Я просто хочу знать, какими будут эти условия .Надеюсь, это немного яснее

1 Ответ

0 голосов
/ 18 декабря 2011

Вы можете использовать магические has*() вызовы с каждым классом, расширяющим Varien_Object, чтобы проверить, существует или нет данное свойство.

Кроме того, Varien_Object предлагаетнемагический hasData('property_name') метод.

Метод hasData() в основном делает то же самое, только косвенно - то есть, передавая имя свойства в качестве аргумента методу, вместо того, чтобы использовать его как часть в верблюдеимя метода.

Mage_Customer_Model_Customer и Mage_Customer_Model_Address действительно расширяют Varien_Object, поэтому вы можете вызвать hasData('street') для экземпляра объекта, чтобы проверить существование такого свойства и использовать результат для вашего if/else сценарий.

Вы также можете волшебным образом вызывать hasStreet(), но в вашем случае вариант hasData() определенно будет работать лучше (так как вы выполняете цикл по массиву с именами переменных).

Обратите внимание, что hasData() может помочь вам отличить уникальные имена свойств.Конечно, вы не можете использовать hasData() для различения свойств с одинаковыми именами, существующих в обоих классах (например, 'entity_id').

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...