Pregunta

He seguido este tutorial exactamente a través del paso 2. I en realidad colocado todos los archivos excepto los del directorio de diseño que tiene disponible para su descarga en mi directorio de aplicaciones. Coincidentemente, también estoy tratando de añadir el atributo "escuela" de manera hasta ahora no he cambiado nada. Veo "escuela" en eav_attribute mesa. El módulo aparece como habilitado en el sistema> Configuración> Opciones avanzadas> salida del módulo. He indexar y la memoria caché enrojecida, conectados y desconectados. Todavía no puedo ver un atributo de "escuela" cuando intento editar un cliente. Estoy utilizando vs 1.7. En caso de que este campo se encuentra en la pestaña "información de la cuenta" para el cliente? ¿Hay algo anticuado acerca de este tutorial?

Esto es todo en el código de descarga, pero para referencia (que le faltaba al cierre de etiquetas PHP, por lo que añade los que son demasiado): controladores / IndexController.php

<?php
class Excellence_Profile_IndexController extends Mage_Core_Controller_Front_Action
{
    public function indexAction()
    {

        $this->loadLayout();     
        $this->renderLayout();
    }
}
?>

etc / config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Excellence_Profile>
            <version>0.1.0</version>
        </Excellence_Profile>
    </modules>
    <frontend>
        <routers>
            <profile>
                <use>standard</use>
                <args>
                    <module>Excellence_Profile</module>
                    <frontName>profile</frontName>
                </args>
            </profile>
        </routers>
        <layout>
            <updates>
                <profile>
                    <file>profile.xml</file>
                </profile>
            </updates>
        </layout>
    </frontend>
    <admin>
        <routers>
            <profile>
                <use>admin</use>
                <args>
                    <module>Excellence_Profile</module>
                    <frontName>profile</frontName>
                </args>
            </profile>
        </routers>
    </admin>
    <global>
     <fieldsets>
       <checkout_onepage_quote>
         <customer_school>
             <to_customer>school</to_customer>
         </customer_school>
       </checkout_onepage_quote>
        <customer_account>
            <school>
                <to_quote>customer_school</to_quote>
            </school>
        </customer_account>    
      </fieldsets>
    </global>
    <global>
        <fieldsets>
            <customer_account>
                 <school><create>1</create><update>1</update><name>1</name></school>
            </customer_account>
        </fieldsets>
    </global>
    <global>
        <models>
            <profile>
                <class>Excellence_Profile_Model</class>
                <resourceModel>profile_mysql4</resourceModel>
            </profile>
            <profile_mysql4>
                <class>Excellence_Profile_Model_Mysql4</class>
                <entities>
                    <profile>
                        <table>profile</table>
                    </profile>
                </entities>
            </profile_mysql4>
        </models>
        <resources>
            <profile_setup>
                <setup>
                    <module>Excellence_Profile</module>
                    <class>Mage_Customer_Model_Entity_Setup</class>
                </setup>
                <connection>
                    <use>core_setup</use>
                </connection>
            </profile_setup>
            <profile_write>
                <connection>
                    <use>core_write</use>
                </connection>
            </profile_write>
            <profile_read>
                <connection>
                    <use>core_read</use>
                </connection>
            </profile_read>
        </resources>
        <blocks>
            <profile>
                <class>Excellence_Profile_Block</class>
            </profile>
        </blocks>
        <helpers>
            <profile>
                <class>Excellence_Profile_Helper</class>
            </profile>
        </helpers>
    </global>
</config>

Modelo / Entidad / Escuela

<?php
class Excellence_Profile_Model_Entity_School extends Mage_Eav_Model_Entity_Attribute_Source_Abstract
{
    public function getAllOptions()
    {
        if ($this->_options === null) {
            $this->_options = array();
            $this->_options[] = array(
                    'value' => '',
                    'label' => 'Choose Option..'
            );
            $this->_options[] = array(
                    'value' => 1,
                    'label' => 'School1'
            );
            $this->_options[] = array(
                    'value' => 2,
                    'label' => 'School2'
            );
            $this->_options[] = array(
                    'value' => 3,
                    'label' => 'School3'
            );

        }

        return $this->_options;
    }
}
?>
¿Fue útil?

Solución

Sin haber mirado los archivos que tiene disponible para su descarga, este es el fondo de lo que se necesita para tener una nueva visualización de atributos del cliente en la cuenta de administrador.
Comprobar lo que se indica aquí para encontrar el fallo.

En primer lugar, comprobar el atributo aparece en la tabla eav_attribute, y también en la tabla customer_eav_attribute, que hace referencia a la primera por la attribute_id.
Si el registro en customer_eav_attribute falta, Magento no será capaz de utilizar el atributo.

Compruebe el valor de la columna es customer_eav_attribute.is_visible 1.

A continuación, compruebe la tabla customer_form_attribute.

SELECT * FROM customer_form_attribute WHERE attribute_id = (SELECT attribute_id FROM eav_attribute WHERE entity_type_id=1 AND attribute_code='school');

Asegúrese de que el adminhtml_customer forma parte del conjunto de resultados.

Si todo lo que está bien, la última cosa que podría faltar es que el atributo no está asignada al conjunto de atributos correctos.
En Magento, los clientes siempre comparten el mismo conjunto de atributos. En la base de datos se puede encontrar utilizando la consulta

SELECT attribute_set_id FROM eav_attribute_set WHERE entity_type_id = (SELECT entity_type_id FROM eav_entity_type WHERE entity_type_code='customer');

O, en PHP, utilizando

Mage::getSingleton('eav/config')->getEntityType('customer')->getDefaultAttributeSetId()

Para comprobar si el atributo está asociado con ese conjunto de atributos, vistazo a la tabla eav_entity_attribute.
Esta tabla no se normaliza al igual que muchas otras tablas de Magento, y no es muy fácil de leer, ya que sólo contiene el id del.

Para confirmar su atributo está asociado con el conjunto de atributos por defecto, por el filtro de su valor attribute_id, y compruebe el valor de la columna de attribute_set_id.

Si todos estos factores son correctos, una última cosa que podría ser la causa de un problema es el modelo de código personalizado, si está utilizando una selección o de selección múltiple tipo de entrada de atributos.
Una forma rápida de comprobar si ese es el problema es cambiar la columna de la eav_attribute.frontend_input a text. A continuación, el campo de entrada de atributo debe aparecer en el back-end como un campo de entrada de texto.

Si ese es el caso, entonces usted sabe qué se debe corregir al lado (es decir, el modelo de código).

Si todos estos fábrica son correctos, su campo será visible en el backend de Magento.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top