да, если я правильно понял. Ну INSERT ведь правильно формируется, только он UPDATE должен быть (форма у меня одна, поэтому я хотел сделать получение значение не из первой формы как в примере, а из бд или просто прописать где нибудь, например <field name="id" type="hidden" default="1"/>)
код admin/tables/ecatalog.php
<?php
defined('_JEXEC') or die;
jimport('joomla.database.table');
class eCatalogTableeCatalog extends JTable
{
public function __construct(&$db)
{
parent::__construct('#__ecatalog', 'name', $db);
}
}
models/ecatalog.php
<?php
defined('_JEXEC') or die;
jimport('joomla.application.component.modeladmin');
class eCatalogModeleCatalog extends JModelAdmin
{
public function getTable($type = 'eCatalog', $prefix = 'eCatalogTable', $config = array())
{
return JTable::getInstance($type, $prefix, $config);
}
public function getForm($data = array(), $loadData = true)
{
$form = $this->loadForm(
$this->option . '.ecatalog', 'ecatalog', array('control' => 'jform', 'load_data' => $loadData)
);
if (empty($form))
{ return false; }
return $form;
}
private function datab()
{
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select('hostname, port, dbname, login, password');
$query->from('#__ecatalog');
$db->setQuery($query);
$result = $db->loadAssoc();
return $result;
}
protected function loadFormData()
{
$data = $this->datab();
//$data['id'] = "1";
return $data;
}
}
Сама ошибка: Сохранить не удалось из-за ошибки: eCatalogTableeCatalog: :store failed
Duplicate entry '1' for key 'PRIMARY' SQL=INSERT INTO `jos_ecatalog` (`id`,`hostname`,`port`,`dbname`,`login`,`password`) VALUES ('1','hostt','3306','dbname','login','password')
Она появляется если в $form (метод getForm) есть поле id со значением "1".
Начал копать и обнаружил: когда выгрузил переменную из Вашего примера $data из loadFormData() получил
object(JObject)#141 (3) { ["_errors:protected"]=> array(0) { } ["id"]=> string(1) "1" ["greeting"]=> string(12) "Hello World!" }
В моем примере это просто массив из базы данных, а не объект
array(6) { ["id"]=> string(1) "1" ["hostname"]=> string(4) "host" ["port"]=> string(4) "3306" ["dbname"]=> string(6) "dbname" ["login"]=> string(5) "login" ["password"]=> string(

"password" }
Вопрос (само собой) как получить объект?
Причем метод loadObject получает из бд stdClass, а не object(JObject)