- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要在 Magento 中创建包含少量数据库表的模块。该模块的功能之一是添加多个图像。例如,在管理员的“添加新项目”或“编辑项目”页面上,从左侧我有标签,其中之一是“项目图片”。单击时我希望此选项卡的内容是我自己的自定义内容。在深入研究代码后,发现它呈现此内容的方式,Magento 正在为完整表单中的每个元素使用 Varien_Data_Form_Element 类之一。我想在这里添加我自己的类,它将按照我想要的方式呈现表单元素。这是一个很好的做法,还是有其他更优雅的方式在管理表单中添加自己的内容?编辑:我必须补充一点,现有的类都无法解决我的问题。
解决方案编辑:我的自定义模块中有一个 Controller ,它位于 Mypackage/Mymodule/controllers/Adminhtml/Item.php 中。在我用于添加和创建新项目的 editAction() 方法中,我创建了 2 个 block ,一个用于表单,一个用于选项卡:
$this->_addContent($this->getLayout()->createBlock('item/adminhtml_edit')) ->_addLeft($this->getLayout()->createBlock('item/adminhtml_edit_tabs'));$this->renderLayout();
Block/Adminhtml/Edit/Tabs.php block 在左侧创建了 2 个选项卡:General Info 和 Item Images,每个他们中的一些人使用 Block 类在右侧呈现不同的内容。
protected function _beforeToHtml(){ $this->addTab('item_info', array( 'label' => Mage::helper('mymodule')->__('Item Info'), 'content'=> $this->getLayout()->createBlock('item/adminhtml_edit_tab_form')->toHtml(), )); $this->addTab('item_images', array( 'label' => Mage::helper('mymodule')->__('Item Images'), 'active' => ( $this->getRequest()->getParam('tab') == 'item_images' ) ? true : false, 'content' => $this->getLayout()->createBlock('item/adminhtml_images')->toHtml(), )); return parent::_beforeToHtml();}
我希望选项卡 item_images 呈现我自己的表单元素和值,而不是默认的变体表单元素。
class Mypackage_Mymodule_Block_Adminhtml_Images extends Mage_Core_Block_Template{ public function __construct() { parent::__construct(); $this->setTemplate('item/images.phtml'); //This is in adminhtml design } public function getPostId() { return $this->getRequest()->getParam('id'); } public function getExistingImages() { return Mage::getModel('mymodule/item')->getImages($this->getPostId()); }}
然后在模板 app/design/adminhtml/default/default/template/item/images.phtml 中你可以使用这些值:
//You can add your own custom form fields here and all of them will be included in the formforeach($this->getExistingImages() as $_img)://Do something with each imageendforeach;//You can add your own custom form fields here and all of them will be included in the form
最佳答案
不,不是。您应该永远不要编辑或添加供应商提供的文件。如果您绝对必须替换一个类文件,您应该使用本地代码池。例如,如果您想更改文本字段的行为,
lib/Varien/Data/Form/Element/Text.php
你应该在本地或社区代码池中放置一个文件
app/code/local/Varient/Data/Form/Element/Text.php
但是,执行替换类,维护与 future 版本的兼容性成为您的责任。这意味着如果 Magento Inc. 更改 lib/Varien/Data/Form/Element/Text.php
,您需要更新您的版本才能兼容。
根据您所说的,我会考虑为呈现表单的 Block 类创建类重写。
关于magento - 在 lib/Varien/Data/Form/Element 文件夹中添加自己的文件是一种好习惯吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6073891/
在我生活的世界中,构建一个将所有飞镖都扔到墙上的解决方案,并希望其中一些能命中靶心是一种非常糟糕的解决方案方法。 那么,我的问题出现了,什么时候在约定可接受的生产系统中使用 INSERT IGNORE
在数据处理时,经常会因为index报错而发愁。不要紧,本次来和大家聊聊pandas中处理索引的几种常用方法。 1.读取时指定索引列 很多情况下,我们的数据源是 CSV 文件。假设
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 6 年前。 Improve
我是一名优秀的程序员,十分优秀!