Не получается! Я специально пробую примеры с документации, но либо ошибка
Предупреждение: call_user_func() expects parameter 1 to be a valid callback, class 'Shop_Controller_Edit_Observer' not found в файле C:\wamp\www\osf.loc\modules\core\event.php (строка 107)
либо ничего не происходит...
если открываю файл modules\template\controller\edit.php смотрю в нем метод
/**
* Processing of the form. Apply object fields.
* @return this
* @hostcms-event Template_Controller_Edit.onAfterRedeclaredApplyObjectProperty
*/
protected function _applyObjectProperty()
{
parent::_applyObjectProperty();
$modelName = $this->_object->getModelName();
if ($modelName == 'template')
{
if ($this->_object->template_id)
{
$this->_object->template_dir_id = 0;
$this->_object->save();
}
$this->_object
->saveTemplateFile(Core_Array::getPost('template'))
->saveTemplateJsFile(Core_Array::getPost('js'));
$css = Core_Array::getPost('css');
try
{
$this->_object->less
// Save LESS and rebuild CSS
? $this->_object->saveTemplateLessFile($css)
// Save just CSS
: $this->_object->saveTemplateCssFile($css);
}
catch (Exception $e)
{
Core_Message::show($e->getMessage(), 'error');
}
$manifest = Core_Array::getPost('manifest');
!is_null($manifest)
&& $this->_object->saveManifestFile($manifest);
$this->_object
->rebuildCompressionCss()
->updateTimestamp();
// Delete all compressed JS
if (Core::moduleIsActive('compression'))
{
Compression_Controller::instance('js')->deleteAllJs();
}
// Backup revision
if (Core::moduleIsActive('revision'))
{
$this->_object->backupRevision();
}
}
Core_Event::notify(get_class($this) . '.onAfterRedeclaredApplyObjectProperty', $this, array($this->_Admin_Form_Controller));
return $this;
}
соответственно мой хук должен быть внедрен сюда, правильно???
Core_Event::notify(get_class($this) . '.onAfterRedeclaredApplyObjectProperty', $this, array($this->_Admin_Form_Controller));
соответственно я пишу в bootstrap.php
Core_Event::attach('Admin_Form_Action_Controller_Type_Edit.onAfterRedeclaredApplyObjectProperty', array('Template_Controller_Edit_Observer', 'onAfterRedeclaredApplyObjectProperty'));
файл abserver.php ложу в папку Modules/Template/Controller/
<?php
defined('HOSTCMS') || exit('HostCMS: access denied.');
/**
* Created by PhpStorm.
* User: xelax
* Date: 15.07.2017
* Time: 19:33
*/
class Template_Controller_Edit_Observer
{
static public function onAfterRedeclaredApplyObjectProperty($controller, $args)
{
switch (get_class($controller)) {
case 'Template_Controller_Edit':
echo_r(Core_Array::getPost('js'));
break;
}
}
}
если я не верно понимаю, дайте готовый пример пожалуйста!!!
HostCMS писал(а):
если в вашей конкретной форме нет переопределенного вызова onAfterRedeclaredApplyObjectProperty, тогда обрабатывайте Admin_Form_Action_Controller_Type_Edit.onBeforeApplyObjectProperty или Admin_Form_Action_Controller_Type_Edit.onAfterApplyObjectProperty.
Откуда я знаю есть переопределенный вызов или нет?
Я пробовал все варианты, не вижу результата