Domanda

Ecco la mia struttura della cartella per il mio blocco:

Product
| - Form.php
Product.php
.

Il modulo del prodotto è un contenitore di forma che dovrebbe avviare il modulo memorizzato all'interno del prodotto -> form.php

Tuttavia, sebbene Product.php stia caricando bene, il Product -> Form.php non sembra apparire.Ho una semplice configurazione del modulo, con un semplice campo sulla richiesta di un prodotto SKU.Il fieldset né il modulo è contenuto all'interno è caricamento sulla pagina.

<?php
/**
 * Form for Warehouse Products.
 * Loads individual items that make up the form itself.
 *
 * @author Dan Hanly
 **/
class Company_Module_Block_Adminhtml_Warehouse_Edit_Product_Form extends Mage_Adminhtml_Block_Widget_Form
{
    public $_id;        // Identifier of the block
    public $_title;     // Title of the block
    public $_form;      // Varien_Data_Form

    /**
     * Init class
     */
    public function __construct()
    {
        parent::__construct();

        $this->_id = 'product_form';
        $this->_title = $this->__('Product Information');
    }

    /**
     * Setup form fields for inserts/updates
     *
     * @return Mage_Adminhtml_Block_Widget_Form
     * @author Dan Hanly
     */
    public function _prepareForm()
    {
        $model = Mage::registry('module_warehouse');
        $request = $this->getRequest();

        $this->_form = $this->createForm($this->getUrl('*/*/save', $this->getUrlParameters($request)));
        $this->setForm($this->_form);

        $fieldset = $this->_form->addFieldset('base_fieldset', array(
            'legend' => $this->_title,
            'class' => 'fieldset-wide',
        ));

        if ($this->isEdit($request)) {
            $fieldset->addField('id', 'hidden', array(
                'name' => 'id',
            ));
        }

        $fieldset->addField('warehouse_id', 'hidden', array(
            'name' => 'warehouse_id',
            'value' => Mage::registry('module_warehouse')->getId()
        ));

        $fieldset->addField('product_id', 'text', array(
            'name' => 'product_id',
            'label' => $this->__('Choose Product'),
            'value' => $this->__('Choose Product'),
        ));

        return parent::_prepareForm();
    }
.

Non c'è niente di rilevante nei tronchi che alludirebbero a questo.

Modifica
Ho chiarito la mia domanda per spogliare parti irrilevanti che erano irrilevanti.

È stato utile?

Soluzione

Ho risolto il problema.

In sostanza, Magento cerca automaticamente il modulo di un contenitore di forma all'interno di una cartella di modifica. Quindi, come il mio modulo è stato memorizzato nella cartella del prodotto, non è stato visualizzato.

C'è una variabile di classe nella classe Mage_Adminhtml_Block_Widget_Form_Container chiamata $this->_mode.Questa variabile valori predefinita su 'edit': questo da solo influenza la ricerca del contenitore della forma per una classe nella cartella Modifica.

All'interno della mia classe Container Class, sono stato in grado di sovrascrivere la variabile _Mode, fornendo 'product' come valore.Ora, tutto è collegato come dovrebbe essere.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top