1

为此,在/brands/adminhtml_brand/new/我的自定义模块的管理面板中,当我想向数据库添加新条目时,我应该会看到一个页面。我正在关注本教程。我layout.xml的设置正确。

magento 无法编辑

BrandController.php

class Desbest_Brands_Adminhtml_BrandController extends Mage_Adminhtml_Controller_Action
    public function editAction()
        {
            $id = $this->getRequest()->getParam('id', null);
            $model = Mage::getModel('brands/example');
            if ($id) {
                $model->load((int) $id);
                if ($model->getId()) {
                    $data = Mage::getSingleton('adminhtml/session')->getFormData(true);
                    if ($data) {
                        $model->setData($data)->setId($id);
                    }
                } else {
                    Mage::getSingleton('adminhtml/session')->addError(Mage::helper('brands')->__('Example does not exist'));
                    $this->_redirect('*/*/');
                }
            }
            Mage::register('example_data', $model);

            $this->loadLayout();
            $this->getLayout()->getBlock('head')->setCanLoadExtJs(true);
            $this->renderLayout();
      }
 }

编辑.php

<?php 
class Desbest_Brands_Block_Adminhtml_Example_Edit extends Mage_Adminhtml_Block_Widget_Form_Container
{
    public function __construct()
    {
        parent::__construct();

        $this->_objectId = 'id';
        $this->_blockGroup = 'brands';
        $this->_controller = 'adminhtml_example';
        $this->_mode = 'edit';

        $this->_addButton('save_and_continue', array(
                  'label' => Mage::helper('adminhtml')->__('Save And Continue Edit'),
                  'onclick' => 'saveAndContinueEdit()',
                  'class' => 'save',
        ), -100);
        $this->_updateButton('save', 'label', Mage::helper('brands')->__('Save Example'));

        $this->_formScripts[] = "
            function toggleEditor() {
                if (tinyMCE.getInstanceById('form_content') == null) {
                    tinyMCE.execCommand('mceAddControl', false, 'edit_form');
                } else {
                    tinyMCE.execCommand('mceRemoveControl', false, 'edit_form');
                }
            }

            function saveAndContinueEdit(){
                editForm.submit($('edit_form').action+'back/edit/');
            }
        ";
    }

    public function getHeaderText()
    {
        if (Mage::registry('example_data') && Mage::registry('example_data')->getId())
        {
            return Mage::helper('brands')->__('Edit Example "%s"', $this->htmlEscape(Mage::registry('example_data')->getName()));
        } else {
            return Mage::helper('brands')->__('New Example');
        }
    }

}

网格.php

<?php
class Desbest_Brands_Block_Adminhtml_Example_Grid extends Mage_Adminhtml_Block_Widget_Grid
{
    public function __construct()
    {
        parent::__construct();
        $this->setId('example_grid');
        $this->setDefaultSort('id');
        $this->setDefaultDir('desc');
        $this->setSaveParametersInSession(true);
    }

    protected function _prepareCollection()
    {
        $collection = Mage::getModel('brands/example')->getCollection();
        $this->setCollection($collection);
        return parent::_prepareCollection();
    }

    protected function _prepareColumns()
    {
        $this->addColumn('id', array(
            'header'    => Mage::helper('brands')->__('ID'),
            'align'     =>'right',
            'width'     => '50px',
            'index'     => 'id',
        ));

        $this->addColumn('attributelabelid', array(
            'header'    => Mage::helper('brands')->__('Name'),
            'align'     =>'left',
            'index'     => 'name',
        ));

        $this->addColumn('name', array(
            'header'    => Mage::helper('brands')->__('Description'),
            'align'     =>'left',
4

2 回答 2

2

根据您尝试访问的 URL,您的控制器操作应该是newAction(),而不是editAction(),除非您已经有 newAction() 转发以在教程中进行编辑。

您链接到的教程包括从 newAction 到 editAction 的转发,使用这个:

public function newAction()
{
    $this->_forward('edit');
}

因此,请确保您使用的是该转发,或者访问控制器/brands/adminhtml_brand/edit/,如果您这样做,请确保更新您的布局句柄以定位编辑路线。

解决问题需要做的一些事情:

  • 首先,将所有相关代码发布到 SO 问题 - 包括布局 xml 更新
  • 始终包含所有 magento 类/文件的完整类名或文件路径。因为看起来你没有做明显错误的事情,它可能会归结为一些琐碎的事情,比如拼写错误或不匹配的块类型/名称——这种事情在我身上发生过很多次。
  • 如果您还没有禁用缓存
  • 启用块模板提示,以便您确定哪些模板和块被拉入页面。
  • 检查 exception.log、system.log 以及您的 PHP 错误日志以查看其中是否有任何内容。
于 2012-08-15T22:08:06.333 回答
0

您可能遇到 ACL(magento 安全性)问题。

有关更多详细信息,请参见此处

于 2012-08-15T21:40:10.810 回答