Пользовательская форма - редактирование записи

  • 5 Ответов
  • 213 Просмотров

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

*

Оффлайн kadett

Доброго дня! Веду работу над компонентом. Там будет пользовательская форма для добавления и редактирования объекта. В модели формы есть метод save для сохранения формы в БД. Добавляется новая запись без проблем, а если открывать форму для редактирования, то меняется не старая запись в БД, а создается новая. В форме есть скрытое поле id записи. При пустом поле создается новая запись, а при заполненном id должна редактироваться соответствующая запись. Не пойму в чем баг?! Помогите кто может.
Вот код метода в модели формы:
public function save($data)
{
$table = JTable::getInstance('Form', 'Table');
$table->bind($data);
return $table->store();
}

В шаблоне вида при вызове формы передавай id
<?php $link 'index.php?option=com_news&task=item.edit&id='.$row->id;?>а в моделе в методе getItem получить id
$input = JFactory::getApplication()->input;

$id = $input->get('id',1,'INT');

*

Оффлайн robert

Сделайте класс вашей модели наследуемым от JModelAdmin() и используйте конструкцию parent::save($data).
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

Оффлайн kadett

Спасибо за подсказки. Класс модели и был наследован от JModelAdmin.
Интересно, для редактирования формы нужно реализовывать новую функцию в контроллере? У меня сейчас всё через одну - save($data). Просто если $id передаётся - это уже существующая запись. А если ничего не передаётся - новая запись.
Где бы про всё это поподробнее можно почитать? Дайте кто-нибудь наводку.

*

Оффлайн robert

$id передается в $_REQUEST (она присутствует в $_GET, когда вы открываете существующую запись для редактирования) и хранится в сессии.
Где бы про всё это поподробнее можно почитать? Дайте кто-нибудь наводку.
Лучше читайте сразу код. JModelAdmin, например, находится здесь: /libraries/legacy/model/admin.php.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

Оффлайн Septdir

  • *******
  • 2084
  • [+]106 / [-]0
  • JoomlaZen
    • Просмотр профиля
    • Игорь «Septdir» Бердичевский
Ну у меня утренний тупняк, но если память не подводить, то надо не в гет. А поле (можно скрытое) делать с именем id тогда оно не в гет а в пост пойдет.
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
________
Мои Контакты: Сайт | skype:septdir | Telegram | VK | Facebook | Twiter | Все контакты