Новости Joomla

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

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Хочу реализовать следующее в своем компоненте:

Журнал операций - чтоб иметь четкую картину кто когда и чего делал.
Например: есть таблица №1 и все виды для работы с ней.
при создании элемента в Т1 надо чтоб запрос как текст попал в Т(log)
Структура для Т(log) создана

Подскажите куда копать? Или отговорите...
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
самое простое: переопределить все методы создания/сохранения/публикации/удаления/прочих_действий элементов в модели и перед вызовом родителя делать запись в лог через JLog либо организовать собственный лог (запись в отдельную таблицу компонента, просмотр и управление - только в админке и только суперюзером)
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Блин по переопределению чет сражу не понимаю. Подкиньте ссылочку на изучение, кто богат.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Спойлер
[свернуть]
Функция test() в классе Test2 переопределена.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
А список названий какой у функций
save? или как?
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
И еще вопрос. А как достать переменные данной записи внутри метода?
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
По переопределению save получилось
Спойлер
[свернуть]
Подскажите какие еще есть функции полезные для работы и как они называются по англ и входные выходные данные. (можно ссылку)
Полезные например: после сохранения есть что-то, а то в момент сохранения может не быть id. Может еще какие заморочки есть?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
По переопределению save получилось
Спойлер
[свернуть]
Что получилось? По приведенному коду не вижу.
Полезные например: после сохранения есть что-то, а то в момент сохранения может не быть id. Может еще какие заморочки есть?
Переведите.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Что получилось? По приведенному коду не вижу.Переведите.
Получилось то что достал данные $data и могу их пользовать. По поводу переведите: не могу достать id элемента который только что создается.
Для добавления нового элемента как лучше достать данные?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
не могу достать id элемента который только что создается.
В переопределенном методе save() сразу после успешной
Код: php-brief
$table->store()
делайте
Код: php-brief
$id=$table->id;
Не будь паразитом, сделай что-нибудь самостоятельно!
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
... сразу после успешной
вот эт оне понимаю. Что это значит?
И попутно вопрос как мне положить переформированные данные в другую таблицу?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
не могу достать id элемента который только что создается.
Посмотрел JModelAdmin::save(), можно сделать проще: в переопределенном методе save() после успешного сохранения
Код: php-brief
$id=$this->getState($this->getName().'.id');
На этом бесплатные ответы закончились.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
На этом бесплатные ответы закончились.
Спасибо и на этом. Дали бы ссылки на то как писать в другой table и все прочее - я готов разбираться, можно без прямых подсказок. Тем не менее спасибо!
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Спасибо и на этом. Дали бы ссылки на то как писать в другой table и все прочее - я готов разбираться, можно без прямых подсказок. Тем не менее спасибо!
Не знаю такой ссылки - сам учусь, разбирая код.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Не знаю такой ссылки - сам учусь, разбирая код.
platonische, это на самом деле так. нет ничего лучше в изучении чего то, чем изучение работы его исходников. имхо вы без этого не продвинетесь дальше, сколько бы умных книжек вы не прочли.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Подскажите в каком стандартном компоненте есть запись в две таблице?
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
А в чём проблема с записью в две таблицы?

Код: php
public function save($data)
{
    if (!parent::save($data))
    {
       return false;
    }

    $id = $this->getState($this->getName(). '.id');
    $this->updateSecondTable($id, $data);
}

private function updateSecondTable($id, $data)
{
     // здесь пишите во вторую таблицу
}
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Честно признаться. Я действительно немного знаю и достаточно тяжеловато.
Затык заключается не в ток как передать переменные другой функции, а в том куда передать?

Ведь все же есть готовое и можно наверное во вторую таблицу методом save записать данные или надо городить что-то вот такое?:
Спойлер
[свернуть]

Читаю код родительского метода из файла libraries\legacy\model\admin.php буду разбираться как его заставить table сменить... пока решение в лоб - скопировать его и присвоить нужное значение $table
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Что выходит:
в моделе добавил getLogTable
Спойлер
[свернуть]

метод save вот такой:
Спойлер
[свернуть]

И вторая функция сохранения вот ту прошу помочь. Все работает но не все понимаю
Спойлер
[свернуть]
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Ещё вопрос: А куда можно вынести функцию function updateSecondTable($data) чтоб пользоваться ей из всех моделей, что есть в компоненте?
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Возник вопрос.

Сохранение во вторую таблицу работает отлично.

второе сохранение срабатывает после первого сохранения и вываливает в адресную строку id не элемента а id из второго сохранения (id таблицы log) как побороть?
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Ответ на пред пост
Спойлер
[свернуть]
Из второго сохранения надо убрать эту строку.
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
А зачем Вам проверка  if ($this->associationsContext && JLanguageAssociations::isEnabled())?
Я не знаю - взял родительский метод под копирку.
Подскажите какие операции здесь лишние? cleanCache нужен ли и все что в catch ?
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Продолжаю задавать вопросы.
1. Подскажите куда засунуть функцию чтоб был к ней доступ из каждой модели?
2. Подскажите как переопределить publish и delete функции? Точнее как внутри них запустить функцию save? Суть в том что мне надо при изменении статуса published делать запись во второй таблице и соответственно вызывать методы сохранения новой записи... не выходит у меня это.
Ну и еще переопределить их где лучше? в модели или контроллере?
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
1. Подскажите куда засунуть функцию чтоб был к ней доступ из каждой модели?
Никуда не засовывать, любой метод в любой модели можно дергать из другой модели!
Код: php
$model = JModelLegacy::getInstance( $name = 'List', $prefix = 'TestModel' ); //то есть имя класса модели TestModelList
echo $model->getTest();// вызываем метод getTest() в модели!

2. Подскажите как переопределить publish и delete функции? Точнее как внутри них запустить функцию save? Суть в том что мне надо при изменении статуса published делать запись во второй таблице и соответственно вызывать методы сохранения новой записи... не выходит у меня это.
Ну и еще переопределить их где лучше? в модели или контроллере?
2. переопределить просто
Код: php
public function publish( &$pks, $value = 1 ){
if ( parent::publish( $pks, $value ) ) {
//тут ваш код
}
}
Только зачем вам вызывать внутри них метод save для изменения данных?
Получаете нужную таблицу через
$table = $this->getTable('table_name'); //вместо table_name имя вашей таблицы
$table->load(10); // загружаете запись с id=10
$table->text = 'lalala'; //меняете значение в поле text на lalal
$table->save(); // сохраняете данные!
« Последнее редактирование: 14.03.2016, 21:11:11 от Istaan »
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Никуда не засовывать, любой метод в любой модели можно дергать из другой модели!
2. переопределить просто
Код: php
public function publish( &$pks, $value = 1 ){
if ( parent::publish( $pks, $value ) ) {
//тут ваш код
}
}
Только зачем вам вызывать внутри них метод save для изменения данных?
Получаете нужную таблицу через
$table = $this->getTable('table_name'); //вместо table_name имя вашей таблицы
$table->load(10); // загружаете запись с id=10
$table->text = 'lalala'; //меняете значение в поле text на lalal
$table->save(); // сохраняете данные!
По первому вопросу спасибо испробую!
По второму немного поясню: Вот сменили значение published а в таблице Log надо СОЗДАТЬ запись, тут вопрос еще один всплывает, когда берешь внутри модели somethingS то это класс JModelList а метод сохранения у меня лежит в методе SOMETHING а он расширяет класс JModelAdmin и чего-то у меня не катит функция вызванная из другого метода
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
По первому вопросу спасибо испробую!
Я там выше код дополнил как модель дергать!

По второму немного поясню: Вот сменили значение published а в таблице Log надо СОЗДАТЬ запись
а вы пробовали хоть немножко документацию читать?!
Повторю код:
Код: php
$table = $this->getTable('table_name'); //вместо table_name имя вашей таблицы
$table->load(10); // загружаете запись с id=10
$table->text = 'lalala'; //меняете значение в поле text на lalal
$table->save(); // сохраняете данные!
Вот так вы отредактируете старую запись!

Код: php
$table = $this->getTable('table_name'); //вместо table_name имя вашей таблицы
$table->text = 'lalala'; //меняете значение в поле text на lalal
$table->save(); // сохраняете данные!
Вот так вы создадите новую запись!

Вам не нужно вызывать метод SAVE ибо он без контроллера, без переданных данных в $_POST, токена и установки состояний работать не будет!
И в конечном результате метод save делает сохранение в таблицу с помощью класса JTable!


тут вопрос еще один всплывает, когда берешь внутри модели somethingS то это класс JModelList а метод сохранения у меня лежит в методе SOMETHING а он расширяет класс JModelAdmin и чего-то у меня не катит функция вызванная из другого метода
Потому что вы 99.999% неправильно вызываете модель!
Если вызываете не так:
Код: php
$model = JModelLegacy::getInstance( $name = 'List', $prefix = 'TestModel' ); //то есть имя класса модели TestModelList
echo $model->getTest();// вызываем метод getTest() в модели!
а просто проинклудив, то неудивительно что у вас не работает!
Но и работать не будет! Вам надо сделать как я написал выше! через $table (класс JTable)
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Понял! Шагаем дальше. Спасибо!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[РЕШЕНО] Дублирование при создании

Автор platonische

Ответов: 7
Просмотров: 924
Последний ответ 12.02.2021, 11:24:26
от platonische
Обработка AJAX в компоненте Joomla!3

Автор balancer

Ответов: 33
Просмотров: 10347
Последний ответ 23.07.2020, 07:45:53
от Dolphin4ik_1
Пагинатор в нестандартном компоненте

Автор sesil

Ответов: 8
Просмотров: 739
Последний ответ 04.09.2019, 11:24:30
от sesil
Не видится файлы языкового пакета в созданном компоненте

Автор khachatur86

Ответов: 0
Просмотров: 948
Последний ответ 30.03.2019, 23:35:26
от khachatur86
Стандартная система рейтингов в custom компоненте

Автор platonische

Ответов: 1
Просмотров: 710
Последний ответ 12.02.2019, 16:55:03
от platonische