我有一个Slider模型,有一些相关的图像(模型)。编辑Slider时,它的图像有一个标签。现在可以修改此选项,以选择和取消选择包含图像。这似乎是通过一个管理网格完成的,有一个复选框列(“values”键用于测试):
$this->addColumn('in_slider', array(
'header_css_class' => 'a-center',
'type' => 'checkbox',
'name' => 'in_slider',
'values' => array(1,2),
'align' => 'center',
'index' => 'slider_image_id'
));
假设上图中的Slider附有一张图片,效果很好。但是,当用户选择“任意”并单击“搜索”时,所有图像必须显示,但应取消选择那些未关联的图像。我认为这是这种功能的标准行为。
我没有得到的是这两个按钮背后的机制:Reset Filter
和Search
。从我设法挖掘出来的,网格类有一个getGridUrl()
方法,用于刷新网格数据(通过AJAX)。该URL映射到控制器。
// in grid class
public function getGridUrl()
{
return $this->getUrl('*/*/editGrid', array('_current' => true));
}
// Image controller
public function editGridAction()
{
$blockMarkup = $this->getLayout()->createBlock('module/someblock')->toHtml();
$this->getResponse()->setBody($blockMarkup);
}
但是“搜索”按钮怎么样?这是如何工作的?
其他模块如何知道何时显示所有实体,或搜索“是”或“否”?
保存滑块时,如何获取所选值?在Slider控制器的saveAction
中工作,我猜想,但是如何获得复选框值?
答案 0 :(得分:0)
您正在寻找的是群众行动。将此函数添加到您的网格文件(无论扩展Mage_Adminhtml_Block_Weidget_Grid):
protected function _prepareMassaction()
{
$this->setMassactionIdField('some_ID');
$this->getMassactionBlock()->setFormFieldName('element_name'); //html name of checkbox
$this->getMassactionBlock()->addItem('some_ID', array(
'label'=> __('Some Label'),
'url' => $this->getUrl('*/*/doSomething'), //an action defined in the controller
'selected' => 'selected',
'confirm' => __('Are you sure?')
));
return $this;
}
这是一篇很好的博客文章,有助于解释这个概念: http://inchoo.net/ecommerce/magento/how-to-add-massactions-to-magentos-grid/