Pergunta sobre magento-1.5, magento – Adicionar campos personalizados no formulário de revisão

1

Estou ansioso para criar um menu suspenso com os campos personalizados "ID de e-mail" e um no formulário de revisão.

Eu tentei este, mas não salvando os dados, só tem os campos

app \ code \ core \ Mage \ Revisão \ Modelo \ 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>

Agora adicione e-mail, fname na tabela review_detail no banco de dados também vá para app \ code \ core \ Mage \ Adminhtml \ Bloco \ Review \ Edit \ Form.php também adicione:

<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 para

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

Sua resposta

2   a resposta
2

Finalmente eu resolvi isso ... Abraapp \ code \ core \ Mage \ Revisão \ Modelo \ Recurso \ Revisão.php

você vai encontrar esse código em linha cerca de 150

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

Adicione os novos dois campos que você deseja adicionar.

<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>

Isso não é mais .... :) Feliz codificação

-1: Sua alteração no arquivo principal anshuman
Isso está adicionando um campo personalizado, mas quando o formulário enviado não está sendo armazenado no banco de dados :( Mr_Green
Assim como anshuman disse, nunca use isso como uma solução. A edição de arquivos principais é uma prática muito ruim e será difícil de resolver durante as atualizações do magento. David Kooijman
6

Modificar a classe principal Mage é um pouco assustador, o que será difícil de atualizar a classe core magento no futuro. Você pode substituir a classe específica pelo seu próprio módulo personalizado (veja o criador do módulo se você quiser configurar um)

Config.xml do módulo, adicione os modelos de reescrita como abaixo:

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

E a classe especificada se estenderá da classe principal do Magento que você deseja sobrescrever:

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

Ps. para adicionar o novo campo na tabela magento review_detail:

<code>$installer = $this;
$installer->startSetup();
$installer->run("ALTER TABLE review_detail ADD COLUMN email VARCHAR(255) NULL");
$installer->endSetup();
</code>
o que devo usar em vez de<review> substituir alguma outra classe? Mr_Green

Perguntas relacionadas