Свой модуль со своей таблицей по аналогии с модулем "Константы"

#
Свой модуль со своей таблицей по аналогии с модулем "Константы"
Добрый день. Версия халява. Пытаюсь создать свой модуль  по аналогии с модулем "Константы" - где будут данные из Формы обратной связи с сайта.
Таблица
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

Что не так делаю?
Такая же ошибка при нажатие на Лампочку активности записи
E-mail: info@syrbek.ru / телега: @syrbek /skype: activexm / syrbek.ru / Поддержка сайтов / г. Москва [HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, Git, SVN, Redmine]
#
Re: Свой модуль со своей таблицей по аналогии с модулем "Константы"
С ошибками разобрался. Были неправильные ссылки в настройках формы АЦ которую я создавал.
Такой вопрос, можно ли прикрутить поле для прикрепление файла?
Если да то можете дать пример?  
E-mail: info@syrbek.ru / телега: @syrbek /skype: activexm / syrbek.ru / Поддержка сайтов / г. Москва [HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, Git, SVN, Redmine]
#
Re: Свой модуль со своей таблицей по аналогии с модулем "Константы"
Seri,
исходный код открыт, смотрите имеющийся функционал
HostDev.pw - модули для HostCMS, Telegram: @hostdev
#
Re: Свой модуль со своей таблицей по аналогии с модулем "Константы"
Не все тут просто так взял и разобрался. Кроме кода наверняка есть настройки формы для отображение поле Файл. Кто сталкивался с оеальными примерами и делал свои разработки модуля для админки. Надо же уметь самостоятельно внедрять свои идейные модулы в АЦ
E-mail: info@syrbek.ru / телега: @syrbek /skype: activexm / syrbek.ru / Поддержка сайтов / г. Москва [HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, Git, SVN, Redmine]
#
Re: Свой модуль со своей таблицей по аналогии с модулем "Константы"
Seri писал(а):
Кроме кода наверняка есть настройки формы для отображение поле Файл.

я так понял вм нужно в админке при создании элемента, вывести поле для загрузки файла еще?
можно посмотреть в любом _Controller_Edit (например: Informationsystem_Item_Controller_Edit)

$oImageField = Admin_Form_Entity::factory('File');
www.morozovpimnev.ru - создание, поддержка и продвижение сайтов | Наш канал https://asmp.su/channel
Авторизация