Pytanie w sprawie magento-1.5, magento – Dodaj niestandardowe pola w formularzu recenzji

1

Nie mogę się doczekać, aby utworzyć niestandardowe pola „Email Id” i jedno menu rozwijane w formularzu Recenzja.

Próbowałem tego, ale nie zapisując danych, tylko pokazuje pola

app kod core Mage Recenzja Mysql4 Recenzja.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>

Teraz dodaj e-mail, fname w tabeli review_detail w bazie danych również przejdź do aplikacji code core Mage Administratorhtml Zablokuj Edycja Form.php również dodaje:

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

przed do

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

Twoja odpowiedź

2   odpowiedź
6

co będzie trudne do uaktualnienia w przyszłości klasy podstawowej magento. Możesz zastąpić konkretną klasę swoim własnym modułem niestandardowym (patrz kreator modułu, jeśli chcesz go skonfigurować)

Moduł config.xml, dodaj przepisywanie modeli w następujący sposób:

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

A określona klasa będzie rozszerzać się z podstawowej klasy Magento, którą chcesz zastąpić:

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

Ps. aby dodać nowe pole w tabeli magento review_detail:

<code>$installer = $this;
$installer->startSetup();
$installer->run("ALTER TABLE review_detail ADD COLUMN email VARCHAR(255) NULL");
$installer->endSetup();
</code>
czego powinienem użyć zamiast<review> zastąpić jakąś inną klasę? Mr_Green
2

app kod core Mage Recenzja Źródło Review.php

znajdziesz ten kod w linii około 150

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

Dodaj nowe dwa pola, które chcesz dodać.

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

To nie więcej .... :) Szczęśliwe kodowanie

Tak jak powiedział anshuman, nigdy nie używaj tego jako rozwiązania. Edycja plików podstawowych jest naprawdę złą praktyką i będzie trudna do rozwiązania podczas aktualizacji magento. David Kooijman
To jest dodanie pola niestandardowego, ale gdy przesłany formularz nie jest przechowywany w bazie danych :( Mr_Green
-1: Zmienia się plik podstawowy anshuman

Powiązane pytania