Добавление пользовательского атрибута в формы - PullRequest
0 голосов
/ 05 апреля 2011

Я использую magento V1.5.Я работаю с клиентом EAV и попытался создать еще один модуль EAV.

Я добавил несколько атрибутов в объекте клиента.Теперь мое требование заключается в том, что эти атрибуты должны редактироваться как из внешнего, так и из внутреннего интерфейса.

Скажите, пожалуйста, как добавить эти атрибуты в форму forntend (форма редактирования клиента).& Подскажите, что нужно делать в бэкэнде, чтобы эти опции были редактируемыми.Я думаю, если есть способ администрирования, как в нашем Form.php, мы готовим форму с добавлением элементов к ней.тогда нам не нужно писать код для создания фактического HTML.Magento автоматически делает это.Так что идея в том, что он также должен загружать новые атрибуты, которые были только что добавлены.(как они появляются в редакторе продукта.)

Второй вопрос, Можете ли вы, ребята, сказать мне, что я должен написать в моей Grid.php >> prepareCollection (для другого модуля EAV).так что он должен получить все атрибуты с их значениями (или может быть немного)

вот что у меня есть в моем Grid.php, но оно не работает

protected function _prepareCollection()
{
    $collection = Mage::getModel('pincodes/eavpincodes')->getCollection();

    $this->setCollection($collection);
    return parent::_prepareCollection();
} 

и этофайл моей коллекции

class Namespace_Pincodes_Model_Resource_Eav_Mysql4_Eavpincodes_Collection extends Mage_Eav_Model_Entity_Collection_Abstract
{
    protected function _construct()
    {
        $this->_init('pincodes/eavpincodes');
    }  
} 

Но в моей сетке ничего не возвращается

и вот мой файл коллекции атрибутов

class Inkfruit_Pincodes_Model_Resource_Eav_Mysql4_Attribute_Collection extends Mage_Eav_Model_Mysql4_Entity_Attribute_Collection
{
public function _construct()
{
    $this->_init('pincodes/resource_eav_attribute', 'eav/entity_attribute');
}

protected function _initSelect()
{

    $this->getSelect()->from(array('main_table' => $this->getResource()->getMainTable()))
        ->where('main_table.entity_type_id=?', Mage::getModel('eav/entity')->setType('pincodes_eavpincodes')->getTypeId())
        ->join(
        array('additional_table' => $this->getTable('pincodes/eavpincodes')),
        'additional_table.attribute_set_id=main_table.attribute_id'  // I think this sql need to be changed but I have no idea what it'll be
        );
    return $this;
}

} ​​

РебятаСпасибо огромное.Этот форум был особенно полезен для меня1030 * Но когда я нажимаю URL для этого модуля, я не вижу ошибки, но эти атрибуты отсутствуют в моей базе данных.

Я также создал файл Entity_Setup, и он выглядит следующим образом. Я думаю, что он неправильный, но я попробовал

<?php

class Namespace_Customer_Entity_Setup extends Mage_Eav_Model_Entity_Setup 
{
public function getDefaultEntities()
    {          
    return array (
        'customer' => array(
            'entity_model'      => 'customer/customer',
            'attribute_model'   => 'customer/attribute',
            'table'             => 'customer/entity',
            'attributes'        => array(
                'profile_image' => array(
                    //the EAV attribute type, NOT a mysql varchar
                    'type'              => 'varchar',
                    'backend'           => '',
                    'frontend'          => '',
                    'label'             => 'Profile Image',
                    'input'             => 'file',
                    'class'             => '',
                    'source'            => '',
                    // store scope == 0
                    // global scope == 1
                    // website scope == 2                           
                    'global'            => 0,
                    'visible'           => true,
                    'required'          => false,
                    'user_defined'      => true,
                    'default'           => '',
                    'searchable'        => true,
                    'filterable'        => true,
                    'comparable'        => false,
                    'visible_on_front'  => false,
                    'unique'            => false
                ),

                'mobile' => array(

                    'type'              => 'varchar',
                    'backend'           => '',
                    'frontend'          => '',
                    'label'             => 'Mobile Number',
                    'input'             => 'text',
                    'class'             => '',
                    'source'            => '',                          

                    'global'            => 0,
                    'visible'           => true,
                    'required'          => true,
                    'user_defined'      => true,
                    'default'           => '',
                    'searchable'        => true,
                    'filterable'        => true,
                    'comparable'        => false,
                    'visible_on_front'  => false,
                    'unique'            => false
                ),

            ),
        )
    );
   }
}

Но я ничего не вижу, никаких новых атрибутов в базе данных.

Можете ли вы, ребята, помочь здесь, что случилось?Спасибо

Ответы [ 3 ]

1 голос
/ 12 июля 2011

Ребята, вот мое решение.Ответы выше работали только для добавления атрибута в базу данных. Мой вопрос состоит из трех частей.

1.Добавление атрибутов к сущности в базе данных.

Отв.вышеуказанные установочные скрипты работали.используя сценарий Setup.php & mysql_install / mysql_upgrade.

2.Атрибут должен редактироваться из внешнего интерфейса

Ans.Нам нужно изменить файл app / design / fontend / default // template / customer / form / edit.phtml

3.Атрибут должен быть редактируемым из Backend

Ans.для этого нам нужно добавить этот фрагмент в наш config.xml

<global>
        <fieldsets>
            <customer_account>
                <create>1</create><update>1</update>
           </customer_account>
       </fieldsets>
</global>

, это сделает все, надеюсь, это кому-нибудь поможет

0 голосов
/ 08 июля 2011

Это сработало для меня, обратите внимание на дополнительные строки:

<?php

class Millena_CustomerExportAdditions_Model_Resource_Eav_Mysql4_Setup extends Mage_Eav_Model_Entity_Setup
{
    public function getDefaultEntities()
    {
        return array(
            'customer' => array(
                'entity_model'          =>'customer/customer',
                'attribute_model'       => 'customer/attribute',
                'table'                 => 'customer/entity',
                'additional_attribute_table' => 'customer/eav_attribute',
                'entity_attribute_collection' => 'customer/attribute_collection',
                'attributes' => array(
                    'export_status' => array(
                        //'group'             => 'Group/Tab',
                        'label'             => 'Customer Export Status',
                        'type'              => 'int',
                        'input'             => 'select',
                        'default'           => '0',
                        'class'             => '',
                        'backend'           => '',
                        'frontend'          => '',
                        'source'            => 'millena_customerExportAdditions/customer_attribute_source_exportStatus',
                        'global'            => 2,  //global scope
                        'visible'           => true,
                        'required'          => false,
                        'user_defined'      => false,
                        'searchable'        => false,
                        'filterable'        => false,
                        'comparable'        => false,
                        'visible_on_front'  => false,
                        'visible_in_advanced_search' => false,
                        'unique'            => false
                    )


               )
           )

      );
    }
}

Установить скрипт просто:

<?php
$installer = $this;
$installer->installEntities();
0 голосов
/ 17 мая 2011

С такой же проблемой здесь.Использование addAttribute в 1.5.0.1, по-видимому, добавляет его в базу данных, но администратор клиента не отображает его.

Этот метод отлично работает с атрибутами товаров и категорий.И в 1.4.0.0 это работает и для клиентов.

В Magento chagelog есть пункт под улучшениями в визуализации атрибутов клиентов.Я начну проверять это дальше.

...