Добрый день. Версия халява. Пытаюсь создать свой модуль по аналогии с модулем "Константы" - где будут данные из Формы обратной связи с сайта.
Таблица
CREATE TABLE `contacts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`phone` varchar(150) DEFAULT '',
`email` varchar(150) DEFAULT '',
`link` varchar(255) DEFAULT '',
`text` mediumtext,
`datetime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`user_id` int(11) NOT NULL DEFAULT '0',
`active` tinyint(1) DEFAULT '0',
`deleted` tinyint(1) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Создал форму в "Формы центра администрирования" по аналогии с формой "Константы" ID = 26
У меня форма ID = 1000
Модуль
defined('HOSTCMS') || exit('HostCMS: access denied.');
class Contact_Module extends Core_Module
{
/**
* Module version
* @var string
*/
public $version = '1.0';
/**
* Module date
* @var date
*/
public $date = '2017-07-25';
/**
* Module name
* @var string
*/
protected $_moduleName = 'contact';
/**
* Constructor.
*/
public function __construct()
{
parent::__construct();
$this->menu = array(
array(
'sorting' => 261,
'block' => 3,
'ico' => 'fa fa-list-alt',
'name' => Core::_('Contact.menu'),
'href' => "/admin/contact/index.php",
'onclick' => "$.adminLoad({path: '/admin/contact/index.php'}); return false"
)
);
}
}
Модель
defined('HOSTCMS') || exit('HostCMS: access denied.');
class Contact_Model extends Core_Entity
{
/**
* Constructor.
* @param int $id entity ID
*/
public function __construct($id = NULL)
{
parent::__construct($id);
if (is_null($id))
{
$oUserCurrent = Core_Entity::factory('User', 0)->getCurrent();
$this->_preloadValues['user_id'] = is_null($oUserCurrent) ? 0 : $oUserCurrent->id;
}
}
/**
* Change constant status
* return self
*/
public function changeStatus()
{
$this->active = 1 - $this->active;
return $this->save();
}
}
Модуль в АЦ /admin/contact
require_once('../../bootstrap.php');
Core_Auth::authorization($sModule = 'contact');
// Код формы
$iAdmin_Form_Id = 100000;
$sAdminFormAction = '/admin/contact/index.php';
$oAdmin_Form = Core_Entity::factory('Admin_Form', $iAdmin_Form_Id);
// Контроллер формы
$oAdmin_Form_Controller = Admin_Form_Controller::create($oAdmin_Form);
$oAdmin_Form_Controller
->module(Core_Module::factory($sModule))
->setUp()
->path($sAdminFormAction)
->title(Core::_('Contact.menu'))
->pageTitle(Core::_('Contact.menu'));
// Меню формы
$oAdmin_Form_Entity_Menus = Admin_Form_Entity::factory('Menus');
// Элементы меню
$oAdmin_Form_Entity_Menus->add(
Admin_Form_Entity::factory('Menu')
->name(Core::_('Contact.main_menu'))
->icon('fa fa-plus')
->img('/admin/images/script_code_red_add.gif')
->href(
$oAdmin_Form_Controller->getAdminActionLoadHref($oAdmin_Form_Controller->getPath(), 'edit', NULL, 1, 0)
)
->onclick(
$oAdmin_Form_Controller->getAdminActionLoadAjax($oAdmin_Form_Controller->getPath(), 'edit', NULL, 1, 0)
)
);
// Добавляем все меню контроллеру
$oAdmin_Form_Controller->addEntity($oAdmin_Form_Entity_Menus);
// Действие редактирования
$oAdmin_Form_Action = Core_Entity::factory('Admin_Form', $iAdmin_Form_Id)
->Admin_Form_Actions
->getByName('edit');
if ($oAdmin_Form_Action && $oAdmin_Form_Controller->getAction() == 'edit')
{
$oAdmin_Form_Action_Controller_Type_Edit = Admin_Form_Action_Controller::factory(
'Contact_Controller_Edit', $oAdmin_Form_Action
);
//$oAdmin_Form_Action_Controller_Type_Edit->addEntity($oAdmin_Form_Entity_Breadcrumbs);
// Добавляем типовой контроллер редактирования контроллеру формы
$oAdmin_Form_Controller->addAction($oAdmin_Form_Action_Controller_Type_Edit);
}
// Действие "Применить"
$oAdminFormActionApply = Core_Entity::factory('Admin_Form', $iAdmin_Form_Id)
->Admin_Form_Actions
->getByName('apply');
if ($oAdminFormActionApply && $oAdmin_Form_Controller->getAction() == 'apply')
{
$oControllerApply = Admin_Form_Action_Controller::factory(
'Admin_Form_Action_Controller_Type_Apply', $oAdminFormActionApply
);
// Добавляем типовой контроллер редактирования контроллеру формы
$oAdmin_Form_Controller->addAction($oControllerApply);
}
// Источник данных 1
$oAdmin_Form_Dataset = new Admin_Form_Dataset_Entity(Core_Entity::factory('Contact'));
$oAdmin_Form_Dataset->changeField('name', 'type', 1);
// Добавляем источник данных контроллеру формы
$oAdmin_Form_Controller->addDataset($oAdmin_Form_Dataset);
// Показ формы
$oAdmin_Form_Controller->execute();
Контроллер
defined('HOSTCMS') || exit('HostCMS: access denied.');
class Contact_Controller_Edit extends Admin_Form_Action_Controller_Type_Edit
{
public function setObject($object)
{
parent::setObject($object);
$oMainTab = $this->getTab('main');
$oAdditionalTab = $this->getTab('additional');
switch ($this->_object->getModelName())
{
case 'contact':
$this->title(
$this->_object->id
? Core::_('Contact.edit_title', $object->name)
: Core::_('Contact.add_title')
);
break;
}
return $this;
}
/**
* Executes the business logic.
* @param mixed $operation Operation name
* @return self
*/
public function execute($operation = NULL)
{
if (!is_null($operation) && $operation != '')
{
$name = Core_Array::getRequest('name');
$id = Core_Array::getRequest('id');
$oSameContact = Core_Entity::factory('Contact')->getByName($name);
if (!is_null($oSameContact) && $oSameContact->id != $id)
{
$this->addMessage(
Core_Message::get(Core::_('Contact.add_error'))
);
return TRUE;
}
}
return parent::execute($operation);
}
/**
* Processing of the form. Apply object fields.
* @return self
* @hostcms-event Admin_Form_Action_Controller_Type_Edit.onBeforeApplyObjectProperty
* @hostcms-event Admin_Form_Action_Controller_Type_Edit.onAfterApplyObjectProperty
*/
protected function _applyObjectProperty()
{
$this->_formValues['name'] = trim(Core_Array::get($this->_formValues, 'name'));
return parent::_applyObjectProperty();
}
}
Вопрос: При попытке добавит запись высвечивается ошибка
Dataset 1 does not exist.
36 modules/core/exception.php
1056 modules/admin/form/controller.php
94 admin/contact/index.php
Что не так делаю?
Такая же ошибка при нажатие на Лампочку активности записи