0 Пользователей и 1 Гость просматривают эту тему.
  • 10 Ответов
  • 354 Просмотров
*

OnePrg

  • Осваиваюсь на форуме
  • 40
  • 0
Пишу свою компоненту. Решил идти методом аналогии, разбираю в отладчике работу компоненты "Категории" и переношу код в свою компоненту.

При создании/редактировании категории открывается форма administrator\components\com_categories\views\category\tmpl\edit.php

Чтобы подключить к стандартным кнопкам редактирования события в Joomla используется такой код

Код
JFactory::getDocument()->addScriptDeclaration('
Joomla.submitbutton = function(task)
{
if (task == "category.cancel" || document.formvalidator.isValid(document.getElementById("item-form")))
{
jQuery("#permissions-sliders select").attr("disabled", "disabled");
' . $this->form->getField("description")->save(). '
Joomla.submitform(task, document.getElementById("item-form"));

if (task !== "category.apply")
{
window.parent.jQuery("#categoryEdit' . $this->item->id . 'Modal").modal("hide");
}
}
};
');


Разъясните пожалуйста новичку следующее:

$this->form->getField("description")->save()

при чём здесь метод save к полю description? ведь save прописана в models?
*

robert

  • Профи
  • 4074
  • 376
Этот код не имеет ничего общего с методом save() в модели, он всего лишь выводит следующий JS-код:
Код: javascript
if (имя_текстового_редактора.get("jform_description").isHidden()) {имя_текстового_редактора.get("jform_description").show()}; имя_текстового_редактора.get("jform_description").save();
, который вызывает метод save() в скрипте текстового редактора.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.
*

OnePrg

  • Осваиваюсь на форуме
  • 40
  • 0
понял - спасибо
*

OnePrg

  • Осваиваюсь на форуме
  • 40
  • 0
И всё таки как Joomla попадает в save? Всё та же запись категории из админки.

В administrator\components\com_categories\models\category.php поставил точку останова в начале функции save

Стек вызова в отладчике

save    FILE: administrator\components\com_categories\models\category.php    LINE: 478
save    FILE: libraries\legacy\controller\form.php    LINE: 735
execute    FILE: libraries\legacy\controller\legacy.php    LINE: 702
MAIN    FILE: W:administrator\components\com_categories\categories.php    LINE: 27
executeComponent    libraries\cms\component\helper.php    LINE: 405
renderComponent    libraries\cms\component\helper.php    LINE: 380
dispatch    FILE: libraries\cms\application\administrator.php    LINE: 98
doExecute    FILE: libraries\cms\application\administrator.php    LINE: 152
execute    FILE: libraries\cms\application\cms.php    LINE: 261
MAIN    FILE: administrator\index.php    LINE: 51

Получается что сразу после строки

$controller = JControllerLegacy::getInstance('Categories');

в точке входа в компоненту administrator\components\com_categories\categories.php

вызывается save из administrator\components\com_categories\models\category.php

КАК?
« Последнее редактирование: 26.12.2016, 13:13:44 от OnePrg »
*

zomby6888

  • Живу я здесь
  • 1484
  • 167
Метод save контроллера вызывает метод save модели. Что вас так удивляет? Если вы отладчиком войдете в метод execute то увидете что никакой особой магии там нету.
интернет-блог: http://websiteprog.ru
*

OnePrg

  • Осваиваюсь на форуме
  • 40
  • 0
Метод save контроллера вызывает метод save модели. Что вас так удивляет? Если вы отладчиком войдете в метод execute то увидете что никакой особой магии там нету.

Меня удивляет, то что до метода execute не доходит

$controller = JControllerLegacy::getInstance('Categories'); - ПРИ ВЫПОЛНЕНИИ ВОТ ЭТОЙ СТРОКИ Я ПОПАДАЮ В ТОЧКУ ОСТАНОВА В SAVE
$controller->execute($input->get('task'));


А вот когда стою на строке

$controller->execute($input->get('task'));

и нажимаю F11 (использую для отладки CodeLobster), то попадаю в libraries\legacy\controller\legacy.php      function redirect()

, а как мне попасть в саму execute?



Не могу врубиться, как кнопки на форме связываются с методами контроллера?



Не нахожу в administrator\components\com_categories\controllers\category.php метод save
« Последнее редактирование: 26.12.2016, 15:40:15 от OnePrg »
*

robert

  • Профи
  • 4074
  • 376
Меня удивляет, то что до метода execute не доходит
А меня удивляет, как вы решили написать компонент, будучи таким неподготовленным.
$controller = JControllerLegacy::getInstance('Categories'); - ПРИ ВЫПОЛНЕНИИ ВОТ ЭТОЙ СТРОКИ Я ПОПАДАЮ В ТОЧКУ ОСТАНОВА В SAVE
Не нахожу в administrator\components\com_categories\controllers\category.php метод save
- Вы подключаете один контроллер, а пытаетесь искать что-то в другом.
- Наследуемый класс может использовать public и protected методы родителей.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.
*

OnePrg

  • Осваиваюсь на форуме
  • 40
  • 0
благодарю!

пошёл готовиться :)
*

OnePrg

  • Осваиваюсь на форуме
  • 40
  • 0
Братья и сестры!

Ну подскажите мне, пожалуйста, направьте на путь истинный советом или ссылкой на мануальчик

Пытаюсь писать свой компонент. Делаю по аналогии с компонентом com_categories

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



Если я не заполнил поле и нажимаю кнопку "Сохранить", выдаёт сообщение, что поле не заполнено



Если поля заполнил и нажимаю кнопку "Сохранить", то ничего не происходит вообще, даже в браузере ничего не крутиться




В той же компоненте com_categories при нажатии на такую кнопку я хоть попадаю в отладчик, а здесь при нажатии даже в administrator\index.php не заходит.

Код кнопки в com_categories:



код кнопки в моей компоненте


*

b2z

  • Support Team
  • 7457
  • 742
  • Разраблю понемногу
Есть ли ошибки JS в консоли? Покажите весь код формы. Скорее всего не хватает hidden полей, типа task или option, ну или id формы неверный.

Мануальчики здесь.
*

OnePrg

  • Осваиваюсь на форуме
  • 40
  • 0
Есть ли ошибки JS в консоли? Покажите весь код формы. Скорее всего не хватает hidden полей, типа task или option, ну или id формы неверный.

Мануальчики здесь.

За мануальчик весьма благодарю.

Пока решил всё сделать заново, если опять не получится отпишусь.
« Последнее редактирование: 28.12.2016, 22:34:06 от OnePrg »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Joomla+Аналитическая система "Спутник" (Счетчик обращений)

Автор PeterGriffin

Ответов: 2
Просмотров: 436
Последний ответ 22.08.2017, 21:08:27
от demanik-72
База сотрудников на Joomla

Автор mr.s0uc3

Ответов: 10
Просмотров: 454
Последний ответ 08.05.2017, 12:06:22
от AlekVolsk
FREE Accordion Menu Joomla

Автор Freeman90

Ответов: 1
Просмотров: 362
Последний ответ 03.05.2017, 20:41:12
от Freeman90
[SOLVED] Joomla 3 перенаправляет на авторизацию

Автор lexx006

Ответов: 2
Просмотров: 332
Последний ответ 14.04.2017, 17:47:36
от lexx006
Nextend Accordion Menu V9 (joomla 3)

Автор tmpnikl

Ответов: 9
Просмотров: 2372
Последний ответ 14.04.2017, 06:59:35
от web-developer