Поля формы редактирования администратора Magento — Поля (и) настраиваемой модели

Желание добавить пользовательскую модель для визуализации в пользовательской форме администратора 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;
}
}

и мой файл вкладки формы — вкладка отображается с полем множественного выбора, но его пустым (My / Module / Block / Adminhtml / Module / Edit / Tab / 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();
}}

Итак, у меня есть другие поля, вкладки, которые все сохраняют данные и т. Д., Но просто не могут получить значения для визуализации, используя пользовательскую модель внутри поля множественного выбора.

Любая помощь будет потрясающей!

ура

========== РЕДАКТИРОВАТЬ ===========

обновил MyModel.php, чтобы получить foreach в коллекции (например, CMS Pages)

<?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 (или именем действия, чтобы сохранить данные формы). Смотрите ниже мое saveAction в контроллере для admin / backend, расположенного в My / Module / controllers / Adminhtml / ModuleController.php

 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,) в значение базы данных и отображает выбранные поля множественного выбора на соответствующей вкладке при обновлении / обновлении / сохранении

Надеюсь, это кому-нибудь поможет & благодаря Reindex за ваш быстрый ответ

3

Решение

Похоже, имя метода в исходной модели неверно. Кроме того, вам, вероятно, не нужно расширять 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')),
);
}
}
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]