1

カスタム モジュールの管理パネル/brands/adminhtml_brand/new/では、データベースに新しいエントリを追加するときにページが表示されるはずです。私はこのチュートリアルに従っています。そして、私layout.xmlは正しくセットアップされています。

マジェントは編集できません

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();
      }
 }

Edit.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');
        }
    }

}

Grid.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() 転送が既にある場合を除き、コントローラー アクションはnewAction()ではなくである必要があります。editAction()

リンクしたチュートリアルには、これを使用して newAction から editAction への転送が含まれていました。

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

したがって、その転送を使用していることを確認するか、/brands/adminhtml_brand/edit/代わりにコントローラーにアクセスしてください。これを行う場合は、編集ルートをターゲットにするようにレイアウト ハンドルを更新してください。

トラブルシューティングのために行うべきこと:

  • まず、レイアウト xml の更新を含む、関連するすべてのコードを SO の質問に投稿します。
  • すべての magento クラス / ファイルの完全なクラス名またはファイル パスを必ず含めてください。明らかに間違ったことをしているようには見えないので、タイプミスやブロックのタイプ/名前の不一致などの些細なことに帰着する可能性があります-そのようなことは私に何度も起こりました.
  • キャッシュを無効にしていない場合は無効にします
  • ブロック テンプレート ヒントを有効にして、どのテンプレートとブロックがページに取り込まれているかを確実に把握できるようにします。
  • exception.log、system.log、および PHP エラー ログをチェックして、そこに何かがあるかどうかを確認します。
于 2012-08-15T22:08:06.333 に答える
0

ACL(magentoセキュリティ)に問題がある可能性があります。

詳細については、こちらをご覧ください。

于 2012-08-15T21:40:10.810 に答える