1

我创建了一个新的菜单项,我们称之为“我的菜单项”。它显示在 Magento 的管理区域。如果单击新项目,我不想显示网格,而是一个带有一些文本字段和按钮的简单表单应该触发一个动作。我该怎么做?我发现的所有示例都创建了一个网格来显示数据,这不是我想要的。我只想要一个表格就在我的菜单项“后面”

那可能吗?

谢谢!

4

1 回答 1

2

是的,它完全有可能,因为该框架本质上是可扩展的。你为什么不做以下。

1.) 确保您的 adminhtml 控制器正常工作。2.) 创建您在菜单项的操作标签中指定的操作。3.) 在上述动作中:

$this->loadLayout();
$this->renderLayout();

这就是控制器的全部需要。此时您应该正在加载标准的 magento 管理布局。所以你想在页面中添加一个表单?好的,很简单。

4.) 为您的模块声明一个布局 xml 文件。即在您的 etc/config.xml 中,即把它放在全局节点之外。

<adminhtml>
    <layout>
        <updates>
            <yournamespace_yourmodule>
                <file>yourfile.xml</file>
            </yournamespace_yourmodule>
        </updates>
    </layout>
</adminhtml>

那么你会把这个文件放在哪里呢?

好吧,这取决于你,但我建议把它放在 app/design/adminhtml/default/default/layout

这个文件是干什么用的?好吧,我们可以注册一个块并为其设置一个模板文件。

该文件可能看起来像

<?xml version="1.0" encoding="UTF-8"?>
<layout>
<adminhtml_yourcontroller_youraction>
    <reference name="content">
         <block type="yournamespace_yourmodule/adminhtml_yourblock"
                name="yournamespace_yourmodule_form" template="yourformtemplate.phtml"/>
     </reference>
</adminhtml_yourcontroller_youraction>
</layout>

所以接下来的步骤是

5.) 按照您在布局 xml 文件中的引用方式声明一个新块

编辑:为了澄清块文件,继续示例,在模块目录中的 Block/Adminhtml 下创建一个文件,并将其命名为“Yourblock.php”或您想要的任何名称,确保它与您的块声明相对应:

<block type="yournamespace_yourmodule/adminhtml_yourblock" ... found in your layout file.

以下是 Block Class 的示例:

<?php

class Yournamespace_Yourmodule_Block_Adminhtml_Yourblock extends Mage_Adminhtml_Block_Template
{
     //to statt you dont really need anything here, but this is where you would place you block methods that can assist your template file when it needs data or other logic...
}

6.)创建一个模板文件并将其正确放置,在我的示例中将其放置在

应用程序/设计/adminhtml/默认/默认/模板

将您的 php 表单添加到其中(或一些标准 html 以检查其是否正常工作)

就是这样(就显示表单而言——当然,您现在需要创建操作来接受您的表单 POST 以及所有其他内容)。

回顾一下。

  • 声明一个 adminhtml 布局更新文件
  • 声明一个新的 adminhtml 块
  • 实例化块并设置其模板文件,确保布局更新仅特定于您的控制器操作。(都在布局 xml 文件中)
  • 在控制器动作中,只需加载和渲染布局。
于 2013-02-01T08:45:35.323 回答