Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Попытка написать собственный компонент для Joomla 2.5
Форумы портала PHP.SU » » CMS и фреймворки » Попытка написать собственный компонент для Joomla 2.5

Страниц (1): [1]
 

1. vlom - 08 Июня, 2012 - 14:16:25 - перейти к сообщению
Всем привет
Сел за написание собственного компонента, для ветки Joomla 2.5 но вот не задача
Делаю по официальной документации http://docs[dot]joomla[dot]org/User:Rvsj[dot][dot][dot]an_MVC_Component
Но как-то все не ладится, дошел до админской части сделал вывод данных из бд в компонент, но когда пытаюсь редактрировать
получаю вот такое http://ugoo[dot]ru/ss/c2d4c3[dot]jpg ошибка появилась вот на этом шаге http://docs[dot]joomla[dot]org/User:Rvsj[dot][dot][dot]omponent/Part_09
есть подозрения что попросту не может найти файл /administrator/com_autozalog/mod els/forms/autozalog.xml
структура каталога компонента такая http://ugoo[dot]ru/ss/a93b42[dot]jpg
Помощь нужна очень срочно, так как данный компонент мне надо написать для одного из проектов, который сдавать во вторник,
А судя по темпам моей работы я еще не написал и малую толику, того функционала который необходим.
код файла /administrator/components/com_au tozalog/models/autozalog.php
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. // No direct access to this file
  3. defined('_JEXEC') or die;
  4.  
  5. jimport('joomla.application.component.modeladmin');
  6.  
  7. class AutozalogModelAutozalog extends JModelAdmin{
  8.     public function getForm($data = array(), $loadData = true){
  9.         // Get the form.
  10.         $form = $this->loadForm('com_autozalog.autozalog', 'autozalog', array('control' => 'jform', 'load_data' => $loadData));
  11.         return $form;
  12.     }
  13.  
  14.     protected function loadFormData(){
  15.         // Check the session for previously entered form data.
  16.         $data = JFactory::getApplication()->getUserState('com_autozalog.edit.autozalog.data', array());
  17.         if(empty($data)){
  18.             $data = $this->getItem();
  19.         }
  20.         return $data;
  21.     }
  22.  
  23.         public function getTable($name = '', $prefix = 'autozalog_brandsTable', $options = array()){
  24.                 return parent::getTable($name, $prefix, $options);
  25.         }
  26. }

(Добавление)
По поводу того что компонент не может найти файл, не верна оказалась, новое предположение, где-то неправильное обращение к базе
2. vlom - 08 Июня, 2012 - 14:26:05 - перейти к сообщению
на всякий случай приклепляю все файлы
(Добавление)
Структура таблиц
--
-- Структура таблицы `qwe_autozalog_brands`
--

CREATE TABLE IF NOT EXISTS `qwe_autozalog_brands` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`alias` varchar(255) NOT NULL,
`publised` int(11) NOT NULL DEFAULT '1',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;

--
-- Структура таблицы `qwe_autozalog_madels`
--

CREATE TABLE IF NOT EXISTS `qwe_autozalog_madels` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`mark_id` int(11) NOT NULL,
`name` varchar(255) NOT NULL,
`alias` varchar(255) NOT NULL,
`publised` int(11) NOT NULL DEFAULT '1',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
(Добавление)
вариант с 23 строкой из приведенного мною листинга, таже пробовал варианты
PHP:
скопировать код в буфер обмена
  1.         public function getTable($name = '', $prefix = 'AutozalogTable', $options = array()){
  2.                 return parent::getTable($name, $prefix, $options);
  3.         }

PHP:
скопировать код в буфер обмена
  1.         public function getTable($name = 'Brands', $prefix = 'AutozalogTable', $options = array()){
  2.                 return parent::getTable($name, $prefix, $options);
  3.         }
3. Viper - 11 Июня, 2012 - 15:21:14 - перейти к сообщению
В контроллере зачем метод лепили getModel() ?
PHP:
скопировать код в буфер обмена
  1. $model = &$this->getModel('autozalogs');
  2. $view->setModel($model, true);

чем не устроил?

Тем более что в методе модели getTable первым параметром вы передаете имя таблицы а префикс вы переназначаете если он отличен от системного, а он обычно в ветках выше J1.0 всегда был #_ по умолчанию.
Также не совсем понятно на кой черт вам вообще этот метод. Данные из таблицы быстрее всего получить выполнив запрос, а не выгребая непонятно зачем всю таблицу.

 

Powered by ExBB FM 1.0 RC1