Форум русской поддержки Joomla!® CMS
04.12.2016, 18:22:49 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

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

 (Прочитано 81 раз)
0 Пользователей и 1 Гость смотрят эту тему.
kadett
Новичок
*

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 2


« : 31.10.2016, 17:29:29 »

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

Репутация: +0/-0
Offline Offline

Сообщений: 2


« Ответ #1 : 01.11.2016, 11:27:53 »

В шаблоне вида при вызове формы передавай 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
Профи
********

Репутация: +343/-11
Offline Offline

Пол: Мужской
Сообщений: 3568


« Ответ #2 : 01.11.2016, 11:42:49 »

Сделайте класс вашей модели наследуемым от JModelAdmin() и используйте конструкцию parent::save($data).
Записан
kadett
Новичок
*

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 2


« Ответ #3 : 03.11.2016, 10:39:52 »

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

Репутация: +343/-11
Offline Offline

Пол: Мужской
Сообщений: 3568


« Ответ #4 : 03.11.2016, 11:34:24 »

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

Репутация: +32/-3
Offline Offline

Пол: Мужской
Сообщений: 819


Skype: septdir


« Ответ #5 : 03.11.2016, 13:17:00 »

Ну у меня утренний тупняк, но если память не подводить, то надо не в гет. А поле (можно скрытое) делать с именем id тогда оно не в гет а в пост пойдет.
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet