Pregunta sobre magento-1.5, magento – Añadir campos personalizados en forma de revisión

1

Estoy deseando crear un campo personalizado 'Id de correo electrónico' y un menú desplegable en el formulario Revisar.

He intentado esto pero no guardé los datos, solo los campos

app \ code \ core \ Mage \ Review \ Model \ Mysql4 \ Review.php

<code>protected function _afterSave(Mage_Core_Model_Abstract $object)
{
$detail = array(
'title' => $object->getTitle(),
'detail' => $object->getDetail(),
'nickname' => $object->getNickname(),
'email' => $object->getEmail(), // New field 1
'fname' => $object->getFname(), // New field 2
);
</code>

Ahora agregue un correo electrónico, fname en la tabla review_detail en la base de datos también vaya a app \ code \ core \ Mage \ Adminhtml \ Block \ Review \ Edit \ Form.php también agregue:

<code>$fieldset->addField('fname', 'text', array( // New field 2
'label' => Mage::helper('review')->__('First Name'),
'required' => true,
'name' => 'fname'
));

$fieldset->addField('email', 'text', array( // New field 1
'label' => Mage::helper('review')->__('Email'),
'required' => true,
'name' => 'email'
));
</code>

antes de

<code>$fieldset->addField('nickname', 'text', array(
'label' => Mage::helper('review')->__('Nickname'),
'required' => true,
'name' => 'nickname'
));
</code>

Tu respuesta

2   la respuesta
6

lo que será difícil actualizar la clase magento en el futuro. Puede anular la clase específica por su propio módulo personalizado (vea el creador del módulo si desea configurar uno)

El config.xml del módulo, agregue los modelos reescritos de la siguiente manera:

<code><global>
    <models>
        <review_mysql4>
            <rewrite>
                <review>[[Your Company]]_[[Your Module]]_Model_Review</review>
            </rewrite>
        </review_mysql4>
    </models>
    ...
</global>
</code>

Y la clase especificada se extenderá desde la clase principal de Magento que desea anular:

<code>class [[Your Company]]_[[Your Module]]_Model_Review
    extends Mage_Review_Model_Mysql4_Review
{
    protected function _afterSave(Mage_Core_Model_Abstract $object)
    {
     .... 
    }
}
</code>

PD. para agregar el nuevo campo en magento review_detail table:

<code>$installer = $this;
$installer->startSetup();
$installer->run("ALTER TABLE review_detail ADD COLUMN email VARCHAR(255) NULL");
$installer->endSetup();
</code>
¿Qué debo usar en lugar de<review> para anular alguna otra clase? Mr_Green
2

app \ code \ core \ Mage \ Review \ Model \ Resource \ Review.php

Usted encontrará este código en línea alrededor de 150

<code>protected function _afterSave(Mage_Core_Model_Abstract $object)
{
$detail = array(
'title' => $object->getTitle(),
'detail' => $object->getDetail(),
'nickname' => $object->getNickname(),
);
</code>

Agregue los dos nuevos campos que desea agregar.

<code>protected function _afterSave(Mage_Core_Model_Abstract $object)
{
$detail = array(
'title' => $object->getTitle(),
'detail' => $object->getDetail(),
'nickname' => $object->getNickname(),
'email' => $object->getEmail(), // New field 1
'fname' => $object->getFname(), // New field 2
);
</code>

Eso no es más .... :) Feliz codificación

Como dijo anshuman, nunca uses esto como una solución. Editar archivos centrales es una práctica realmente mala y será un problema resolver durante las actualizaciones de Magento. David Kooijman
Esto es agregar un campo personalizado, pero cuando el formulario enviado no se almacena en la base de datos :( Mr_Green
-1: Su archivo central cambia anshuman

Preguntas relacionadas