gpt4 book ai didi

forms - Magento,在网格和表单后端添加并设置一个复选框

转载 作者:行者123 更新时间:2023-12-01 08:34:23 26 4
gpt4 key购买 nike

我有一个完整的后端页面,带有一个网格和一个相应的表单,用于编辑相应模型上的更改。我在表上添加了一个新字段,位类型,因为它将回答用户的是/否配置选项。我在网格和表单上都添加了复选框。

我的问题是,经过几个小时的搜索和尝试不同的方法后,我无法在网格和从数据库中读取相应字段的表单上设置复选框 checked 值。此外,当我单击表单上的保存时,与复选框对应的值始终保存为 1。网格上的所有其他内容和表单都可以正常工作。我已阅读 here , here , here , here还有一些网站和SO questions/answers但仍然不知道我做错了什么。一些解决方案建议使用带有 YES/NO 选项的组合框,但我想要一个复选框,不会那么难。

函数_prepareColumns()内的网格代码:

protected function _prepareColumns() {
...
$this->addColumn('banner_gral', array(
'header' => Mage::helper('banners')->__('General'),
'align' => 'center',
'index' => 'banner_gral',
'type' => 'checkbox',
'values' => $this->getBannerGral()==1 ? 'true' : 'false',
));
...
}

public function __construct()
{
parent::__construct();
$this->setId('bannersgrid');
$this->setDefaultSort('bannerid');
$this->setDefaultDir('asc');
$this->setSaveParametersInSession(true);
$this->setUseAjax(true);
}

public function getGridUrl()
{
return $this->getUrl('*/*/grid', array('_current'=>true));
}

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

在函数_prepareForm()中添加复选框的表单代码:

protected function _prepareForm()
{
$id = $this->getRequest()->getParam('id');
$params = array('id' => $this->getRequest()->getParam('id'));

if (Mage::registry('banners_data')->getdata()) {
$data = Mage::registry('banners_data')->getdata();
}
elseif (Mage::getSingleton('adminhtml/session')) {
$data = Mage::getSingleton('adminhtml/session')->getdata();
Mage::getSingleton('adminhtml/session')->getdata(null);
}
else {
$data = array();
}

$form = new Varien_Data_Form(array(
'id' => 'edit_form',
'action' => $this->getUrl('*/*/save', $params),
'method' => 'post',
'enctype' => 'multipart/form-data',
));
...

$fieldset->addField('banner_gral', 'checkbox', array(
'label' => Mage::helper('banners')->__('Is general'),
'name' => 'banner_gral',
'class' => 'banner_gral',
'checked' => $this->getBannerGral()==1 ? 'true' : 'false',
'onclick' => 'this.value == this.checked ? 1 : 0',
'note' => Mage::helper('banners')->__('blablablabla'),
'tabindex' => 2
));
...
}

在我的表单的 saveAction() 上,我有:

$campaign->setbanner_gral(!empty($data['banner_gral']));

最佳答案

在你的 Controller 中 saveAction() 保存复选框数据时做

$banner_gral = isset($your_form_Data['banner_gral']) ? 1 : 0;

用于网格和表单页面

在你的 Controller 中你应该有 Mage::register(...)->getData() 或 Mage::register(...)

public function editAction()
....
Mage::register('example_data', $model);

在您的表单上 _prepareForm()

$model = Mage::registry('example_data'); // NOTE registry('example_data'); NOT registry('example_data')->getData();

$fieldset->addField('entire_range', 'checkbox', array(
....
'checked' => $model->getBannerGral()==1 ? 'true' : 'false',
......
))

http://www.magentocommerce.com/boards/viewthread/20536/

在您的网格上 _prepareColumns()

$this->addColumn('banner_gral', array(
....
'type' => 'checkbox',
'index' => 'banner_gral',
'values' => array(1,2),
'field_name' => 'checkbox_name',
....
));

关于forms - Magento,在网格和表单后端添加并设置一个复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13704911/

26 4 0
文章推荐: r -\Sexpr{} .Rnw 文件中的特殊 LaTeX 字符($、&、%、# 等)
文章推荐: python - 使用plotly-dash上传文件
文章推荐: asp.net - 如何在 ASPX 标记中调用模块函数?
文章推荐: jsp - 使用从 Servlet 中的数据库获取的值填充 JSP 中的 HTML