php-Magento管理员编辑表单字段-自定义模型字段
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php-Magento管理员编辑表单字段-自定义模型字段,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4719字,纯文字阅读大概需要7分钟。
内容图文
![php-Magento管理员编辑表单字段-自定义模型字段](/upload/InfoBanner/zyjiaocheng/661/cd03a4d48b664c5e85c2989111d15de0.jpg)
想要添加要以自定义magento管理表单呈现的自定义模型.只是似乎无法获得源模型来呈现任何选项.做到这一点应该是一个简单的任务,但也许我错过了一些东西.真的无法在Google上找到任何东西,这主要与系统/配置源模型示例有关.请参见下面的代码
模型文件(My / Module / Model / MyModel.php)
<?php
class My_Module_Model_MyModel extends Mage_Core_Model_Abstract
{
static public function getOptionArray()
{
$allow = array(
array('value' => '1', 'label' => 'Enable'),
array('value' => '0', 'label' => 'Disable'),
);
return $allow;
}
}
和我的表单选项卡文件-选项卡显示有多选字段,但空白(我/模块/块/ Adminhtml /模块/编辑/标签/Data.php)
<?php
class My_Module_Block_Adminhtml_Module_Edit_Tab_Data extends Mage_Adminhtml_Block_Widget_Form
{
protected function _prepareForm(){
$form = new Varien_Data_Form();
$this->setForm($form);
$fieldset = $form->addFieldset('module_form', array('legend'=>Mage::helper('module')->__('Module Information')));
$object = Mage::getModel('module/module')->load( $this->getRequest()->getParam('module_id') );
echo $object;
$fieldset->addField('module_enabled', 'multiselect', array(
'label' => Mage::helper('module')->__('Allowed Module'),
'class' => 'required-entry',
'required' => true,
'name' => 'module_enabled',
'source_model' => 'My_Module_Model_MyModel',
'after_element_html' => '<small>Select Enable to Allow</small>',
'tabindex' => 1
));
if ( Mage::getSingleton('adminhtml/session')->getModuleData() )
{
$form->setValues(Mage::getSingleton('adminhtml/session')->getModuleData());
Mage::getSingleton('adminhtml/session')->setModuleData(null);
} elseif ( Mage::registry('module_data') ) {
$form->setValues(Mage::registry('module_data')->getData());
}
return parent::_prepareForm();
}
}
因此,我还有其他字段,所有保存数据的选项卡等,但是无法使用multiselect字段中的自定义模型获取要渲染的值.
任何帮助都是极好的!!
干杯
==========编辑===========
更新了MyModel.php以在集合中获取foreach(例如CMS页)
<?php
class My_Module_Model_MyModel
{
public function toOptionArray($withEmpty = false)
{
$options = array();
$cms_pages = Mage::getModel('cms/page')->getCollection();
foreach ($cms_pages as $value) {
$data = $value->getData();
$options[] = array(
'label' => ''.$data['title'].'('.$data['identifier'].')',
'value' => ''.$data['identifier'].''
);
}
if ($withEmpty) {
array_unshift($options, array('value'=>'', 'label'=>Mage::helper('module')->__('-- Please Select --')));
}
return $options;
}
在My / Module / Block / Adminhtml / Module / Edit / Tab / Data.php中,我刚刚删除了“ source_model”并替换为
'values' => Mage::getModel('module/mymodel')->toOptionArray(),
============另一个编辑===================
只是要添加,还存在多选择值不能在编辑页面上的刷新/保存上保存/更新多选择字段的问题.为此,我在saveAction(或用于保存表单数据的动作名称)下编辑了管理员控制器.请参阅下面我在控制器中的mySaveAction,用于位于My / Module / controllers / Adminhtml / ModuleController.php中的admin / backend
public function saveAction() {
$model = Mage::getModel('module/module');
if ($data = $this->getRequest()->getPost()) {
$model = Mage::getModel('module/module');
$model->setData($data)
->setModuleId($this->getRequest()->getParam('module_id'));
try {
if ($model->getCreatedTime() == NULL || $model->getUpdateTime() == NULL) {
$model->setCreatedTime(now())->setUpdateTime(now());
} else {
$model->setUpdateTime(now());
}
$ModuleEnabled = $this->getRequest()->getParam('module_enabled');
if (is_array($ModuleEnabled))
{
$ModuleEnabledSave = implode(',',$this->getRequest()->getParam('module_enabled'));
}
$model->setModuleEnabled($ModuleEnabledSave);
//save form data/values per field
$model->save();
Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('module')->__('Item was successfully saved'));
Mage::getSingleton('adminhtml/session')->setFormData(false);
if ($this->getRequest()->getParam('back')) {
$this->_redirect('*/*/edit', array('module_id' => $model->getModuleId()));
return;
}
$this->_redirect('*/*/');
return;
} catch (Exception $e) {
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
Mage::getSingleton('adminhtml/session')->setFormData($data);
$this->_redirect('*/*/edit', array('module_id' => $this->getRequest()->getParam('module_id')));
return;
}
}
Mage::getSingleton('adminhtml/session')->addError(Mage::helper('module')->__('Unable to find item to save'));
$this->_redirect('*/*/');
}
这会将内爆数组(即2、3、6、23、28)保存到数据库值中,并在刷新/更新/保存时在相应选项卡上呈现选定的multiselect字段
希望这对任何人都有帮助感谢Reindex的快速响应
解决方法:
看起来源模型中的方法名称不正确.另外,您可能不需要在源模型中扩展Mage_Core_Model_Abstract.
尝试这个:
<?php
class My_Module_Model_MyModel
{
public function toOptionArray()
{
return array(
array('value' => '1', 'label' => Mage::helper('module')->__('Enable')),
array('value' => '0', 'label' => Mage::helper('module')->__('Disable')),
);
}
}
内容总结
以上是互联网集市为您收集整理的php-Magento管理员编辑表单字段-自定义模型字段全部内容,希望文章能够帮你解决php-Magento管理员编辑表单字段-自定义模型字段所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。