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

SimplyWeb

  • Осваиваюсь на форуме
  • 26
  • 2 / 0
Re: Информация по написанию компонента
« Ответ #180 : 26.11.2009, 12:37:45 »
function savenew_links()
           {
              global $database;

              //$link_id = intval( mosGetParam( $_REQUEST, 'link_id', 0 ) );
           $save_id = mosGetParam( $_REQUEST, 'e_id');
           $save_url = mosGetParam( $_REQUEST, 'e_url', '');
           $save_showid = mosGetParam( $_REQUEST, 'e_showid', '');
           $save_showurl = mosGetParam( $_REQUEST, 'e_showurl', '' );

           if (($save_url<>'')&($save_ankor<>''))
              {
                  $query = "INSERT INTO #__swlinks SET s_id='".$save_id."', s_url='".$save_url."', s_showid='".$save_showid."', s_showurl='".$save_showurl."'";
                  $database->setQuery($query);
                  if ($database->query())
                  {
                    echo("<br>Новая ссылка добавлена!<br>");
                  }   
                 else
                 {
                    echo("<br>Ошибка базы данных!<br>");
                 }
             }
            else
            {
               echo("<br>Ошибка! Попробуйте еще раз! Заполните все поля<br>");
            }
         }
Добавляю через
<textarea name="e_url" id="e_url" cols="150" rows="10"></textarea>
*

SimplyWeb

  • Осваиваюсь на форуме
  • 26
  • 2 / 0
Re: Информация по написанию компонента
« Ответ #181 : 26.11.2009, 12:38:27 »
тогда походу mosGetParam режет?
Если так, то как лучше вытягивать данные из $_REQUEST ?
« Последнее редактирование: 26.11.2009, 12:49:16 от SimplyWeb »
*

SimplyWeb

  • Осваиваюсь на форуме
  • 26
  • 2 / 0
Re: Информация по написанию компонента
« Ответ #182 : 26.11.2009, 13:40:30 »
спасибо, уже разобрался.
$save_url = $_REQUEST['e_url'];
*

Darkick

  • Завсегдатай
  • 1142
  • 239 / 1
Re: Информация по написанию компонента
« Ответ #183 : 26.11.2009, 13:51:05 »
SimplyWeb, ты под 1.5 пишешь или где?
mosGetParam - это под единицу (и лигаси наверно)
никаких $_REQUEST и т.п. по хорошему
Курим Retrieving and Filtering GET & POST requests with JRequest::getVar и API.

В данном случае поможет что-то типа:
Код
$save_url = JRequest::getVar('e_url', '', 'default', 'none', JREQUEST_NOTRIM|JREQUEST_ALLOWRAW|JREQUEST_ALLOWHTML));
*

SimplyWeb

  • Осваиваюсь на форуме
  • 26
  • 2 / 0
Re: Информация по написанию компонента
« Ответ #184 : 26.11.2009, 22:26:07 »
Darkick, пишу под 1.0
*

Darkick

  • Завсегдатай
  • 1142
  • 239 / 1
Re: Информация по написанию компонента
« Ответ #185 : 26.11.2009, 23:04:59 »
а раздел форума  Joomla 1.5 вот и возникает у нас непонимание друг друга :)
*

SimplyWeb

  • Осваиваюсь на форуме
  • 26
  • 2 / 0
Re: Информация по написанию компонента
« Ответ #186 : 26.11.2009, 23:14:53 »
извини, не обратил внимания - через поис тему нашел :)
« Последнее редактирование: 02.01.2010, 12:45:05 от SimplyWeb »
*

shprota

  • Давно я тут
  • 770
  • 53 / 1
  • Тружусь, не покладая рук
Re: Информация по написанию компонента
« Ответ #187 : 31.12.2009, 02:29:29 »
попробуй переименовать каталог во viewmodels - строчными буквами.

$file = isset($tpl)? $this->_layout.'_'.$tpl : $this->_layout;

это когда указываешь шаблон, к нему добавляется префикс. по умолчанию default_
например, default_pictures.php

*

Darkick

  • Завсегдатай
  • 1142
  • 239 / 1
Re: Информация по написанию компонента
« Ответ #188 : 31.12.2009, 14:53:48 »
не следует использовать слово 'view' в имени вида. На форуме мелькал подобный вопрос.
*

t0xas

  • Осваиваюсь на форуме
  • 38
  • 3 / 0
  • Только страсть познания делает нас людьми!
Re: Информация по написанию компонента
« Ответ #189 : 03.01.2010, 19:31:38 »
тема длинная, помнится читал, но вроде ответа не видел на мой вопрос.
Изменяю com_weblinks в админ панели под другие нужды, выбрал его как самый приемлемый компонент.
в шаблоне weblinks добавляю такую запись, в форме, где добавляют ссылку.

Код
<div class="col width-50">
<fieldset class="adminform">
<legend><?php echo JText::_( 'titul' ); ?></legend>
<table class="admintable">
<tr>
<td>
<textarea class="text_area" cols="44" rows="9" name="titul" id="titul"><?php echo $this->weblink->titul; ?></textarea>
</td>
</tr>
</table>
</fieldset>
</div>

Добавляю запись в class TableWeblink extends JTable после дискрипшен

Код
	var $description = null;

var $titul = null;

и в модель class WeblinksModelWeblink extends JModel
Код
function _initData()
{
// Lets load the content if it doesn't already exist
if (empty($this->_data))
{
$weblink = new stdClass();
$weblink->id = 0;
$weblink->catid = 0;
$weblink->sid = 0;
$weblink->title = null;
$weblink->alias               = null;
$weblink->url = null;
$weblink->description = null;
$weblink->titul = null;      <----------- тут
$weblink->date = null;
$weblink->hits = 0;
$weblink->published = 0;
$weblink->checked_out = 0;
$weblink->checked_out_time = 0;
$weblink->ordering = 0;
$weblink->archived = 0;
$weblink->approved = 0;
$weblink->params = null;
$weblink->category = null;
$this->_data = $weblink;
return (boolean) $this->_data;
}
return true;
}

ну и добавляю еще одно поле в базу данных через phpmyadmin, точно такое же как и поле description.
А теперь внимание вопрос. Что я пропустил, что я не учел, чтобы запись сохранялась в базе данных?
Хочу проверить передаваемый массив POST, как мне это сделать?
« Последнее редактирование: 03.01.2010, 19:37:16 от t0xas »
*

b2z

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

t0xas

  • Осваиваюсь на форуме
  • 38
  • 3 / 0
  • Только страсть познания делает нас людьми!
Re: Информация по написанию компонента
« Ответ #191 : 03.01.2010, 22:48:33 »
Спасибо за совет, разобрался, оказалось дело в notepad++  с плагинам FTP_synchronous

Этот хад решил заглючить и не сохранять файлы, товарищи пользуйтесь качественным ПО! :)
« Последнее редактирование: 03.01.2010, 23:10:53 от t0xas »
*

t0xas

  • Осваиваюсь на форуме
  • 38
  • 3 / 0
  • Только страсть познания делает нас людьми!
Re: Информация по написанию компонента
« Ответ #192 : 04.01.2010, 22:09:42 »
И вновь вопрос. Расскажите как происходит сохранения формы в админке?
Я думал что это происходит так.
В шаблоне форму заполняем, потом вызывается функция из контроллера save() в ней идет передача массива $post в модель, а модель пихает все в базу данных пользуясь классом из JTabble.
Я наверное что то не понимаю, так как изменяя пост в контроллере, я не увидел, что что-то изменяется в моей бд.
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Информация по написанию компонента
« Ответ #193 : 04.01.2010, 23:13:52 »
Ну Вы верно расказали - так и происходит. А если что-то где-то не сохраняется, надо искать - почему.
*

t0xas

  • Осваиваюсь на форуме
  • 38
  • 3 / 0
  • Только страсть познания делает нас людьми!
Re: Информация по написанию компонента
« Ответ #194 : 05.01.2010, 19:46:41 »
Тогда все клево, я разобрался и сохранил что надо было, а может подскажете, я сохраняю строку "rod_names_1"=>"12","rod_gal_1"=>"132","rod_titul_1"=>"13" в бд
потом ее пытаюсь преобразовать в шаблоне.
Код
   $param = $this->weblink->tree;
      eval('\$tree = array('.$param.');');
      print_r($tree);
print_r мне на это говорит NULL

если мы делаем так
Код
   $param = '"rod_names_1"=>"12","rod_gal_1"=>"132","rod_titul_1"=>"13"';
      eval('\$tree = array('.$param.');');
      print_r($tree);
то получается все клево и print_r мне показывает то что я прошу
В чем секрет? Может в самом фреймворке есть подобные функции евалу?

Написал функцию прямого запроса в бд, все заработало хорошо.
« Последнее редактирование: 07.01.2010, 23:49:26 от t0xas »
*

t0xas

  • Осваиваюсь на форуме
  • 38
  • 3 / 0
  • Только страсть познания делает нас людьми!
Re: Информация по написанию компонента
« Ответ #195 : 07.01.2010, 23:48:16 »
Сделал роут на контроллеры разные, все отлично до вида доходит все, но. вид отображается странным образом :'(
все отключено и показывает только темплатес, а вся админка куда-то пропала и ничего нет, кроме шаблона компонента.
Может кто подскажет?


написал в файлик компонента weblinks.php
Код
if(JRequest::getCmd(section)){
require_once (JPATH_COMPONENT.DS.'controller2.php');
$controller = new WeblinksController( );

// Perform the Request task
$controller->execute( JRequest::getCmd('task'));
$controller->redirect();

}
else{
require_once (JPATH_COMPONENT.DS.'controller.php');
$controller = new WeblinksController( );
// Perform the Request task
$controller->execute( JRequest::getCmd('task'));
$controller->redirect();

После этого создал контроллер, в него добавил
Код
class WeblinksController extends JController
{
function __construct()
{
parent::__construct();
// Register Extra tasks
$this->registerTask( 'add',  'display' );
$this->registerTask( 'edit', 'display' );

}
function display(){
$view = $this->getView('puppys','html');
$view->display();
}       
}

вид
Код
class WeblinksViewPuppys extends JView
{
function display($tpl = null)
{
global $mainframe;
parent::display($tpl);
}
}


*

b_anton_v

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: Информация по написанию компонента
« Ответ #196 : 17.01.2010, 21:12:16 »
Подскажите я не как не могу понять принцип как передаются переменные в компонентах
Я модифицирую компонент, добавляю возможность поднять в верх строку относительно другой, для этого в базе данных мне надо изменить поля positions данных строк (поменять значения местами)
например я активирую ссылку на одной строке:
Код
index.php?option=com_zayavka&controller=sechenia&task=uparrow&cid[]='. $row->id .'&cid2[]='. $k0.'&pos[]='. $row->positions.'&pos2[]='. $pos.'&mname_filtr='.$data['mname_filtr']
я понимаю в контроллер sechenia в метод uparrow
выглядит он у меня так
Код
	function uparrow()
{
$model = $this->getModel('sechenia');
$msg = JText::_( 'Изменения сохранеы' )

$link = 'index.php?option=com_zayavka&controller=sechenia' ;
 
$this->setRedirect($link, $msg);
}
Контроллер меня отправляет в модель которая уже должна произвести запись в базу данных, у меня она имеет вид такой

Код
	function update()
{
$data = JRequest::get( 'post' );
//$db = &$this->getDBO();//??
$pos = JRequest::getInt('pos') ;
$cid = JRequest::getInt('cid') ;
$pos2 = JRequest::getInt('pos2') ;
$cid2 = JRequest::getInt('cid2') ;
//$msg = JText::_( $cid2 );
$query = "UPDATE #__sechenia  SET #__positions ='".$data['pos']."' WHERE #__id = '".$data['cid']."'; UPDATE #__sechenia  SET #__positions ='".$data['pos2']."' WHERE #__id = '".$data['cid2']."';"  ; 
//$query = "UPDATE #__sechenia  SET #__positions ='".$pos."' WHERE #__id = '".$cid."'; UPDATE #__sechenia  SET #__positions ='".$pos2."' WHERE #__id = '".$cid2."';"  ;
$db =& JFactory::getDBO();
$db->setQuery($query);

}
но ни один способ не сработал, в чем я ошибаюсь ?
И как проверить что в переменной, так как есно уже не работает, как в таком случае отлаживать скрипт?
« Последнее редактирование: 17.01.2010, 21:17:17 от b_anton_v »
*

Physicist

  • Глобальный модератор
  • 984
  • 194 / 0
  • Рябов Денис
Re: Информация по написанию компонента
« Ответ #197 : 17.01.2010, 21:31:52 »
Я модифицирую компонент, добавляю возможность поднять в верх строку относительно другой, для этого в базе данных мне надо изменить поля positions данных строк (поменять значения местами)

Обычно для таких целей используют поле "ordering", что в свою очередь позволяет использовать встроенные методы move, getNextOrder и reorder класса JTable.
*

b_anton_v

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: Информация по написанию компонента
« Ответ #198 : 17.01.2010, 22:13:28 »
У меня была такая мысль но я не знаю точно все методы
Поменять поле в таблице не долго. Только я не могу понять как использовать эти методы, из всех мне кажется самый подходящий move
пример из базы
id      ordering
1     1              С-105     4х4           2,5 кг
4     4             С-105    6x6         2,5 кг
*

Professor

  • Захожу иногда
  • 59
  • 10 / 0
Re: Информация по написанию компонента
« Ответ #199 : 18.01.2010, 19:50:12 »
Здравствуйте, форумчане !

Подскажите, в чём ламерю. Не могу понять почему редирект в админской части компонента (back end) выбивает на форму входа в админку. Прописывал уже прямую ссылку просто на index.php, не выходит.

Может ли проблема быть в том, что папка, в которой лежит Жумла, имеет в названии "." точки (Что то вроде "Joomla_1.5.14_Rus")?

Joomla 1.5.14 Rus
*

Darkick

  • Завсегдатай
  • 1142
  • 239 / 1
Re: Информация по написанию компонента
« Ответ #200 : 18.01.2010, 20:42:57 »
это на серваке или в локалке?
имена домена с подчёркиванием нельзя использовать (папки в принципе можно наверно). Ну и лучше так не извращаться, а сделать нормальное имя
*

Professor

  • Захожу иногда
  • 59
  • 10 / 0
Re: Информация по написанию компонента
« Ответ #201 : 18.01.2010, 21:01:07 »
Это на локалке, и это не домен.
Да знаю я, что не надо так извращаться. Но иногда так хочется :)

З.Ы. попробую на папке без подчёркиваний. Если появятся ещё идеи - делитесь.
*

viroff

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
  • потому что не все йогурты одинаково полезны...
Re: Информация по написанию компонента
« Ответ #202 : 23.02.2010, 13:21:09 »
Народ напишите уже такую книженцию для таких как я и зашибайте бабки.  ^-^
А мне за поданую идею один экземпляр в подарок.

Попробую разобраться с теми двумя программами которые предлогаются для создания компонентов.



http://www.scribd.com/doc/17569145/Joomla-Component-Development-PDF - вот тут чего-то есть.
(пишу простенький компонент, задачей которого является работа с бд - простая html-табличка (представление), добавление, удаление, редактирование записей в mysql... хоцца, чтоб работало - можно без админки. толкового материалу чего-то не сыскать (везде приходится писать backend)
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Информация по написанию компонента
« Ответ #203 : 23.02.2010, 14:33:00 »
Глянь у меня в блоге. Правда там я пока только по админке пишу, но смысл работы с базой одинаков.
*

viroff

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
  • потому что не все йогурты одинаково полезны...
Re: Информация по написанию компонента
« Ответ #204 : 23.02.2010, 18:14:08 »
О да.. Это Ваше творение? Читал уже вот и хотел узнать - а чего это автор "ушёл" в админку. Тогда понятно - принцип такой же, тогда переделываю под frontend. Спасибо!
*

viroff

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
  • потому что не все йогурты одинаково полезны...
Re: Информация по написанию компонента
« Ответ #205 : 23.02.2010, 18:29:29 »
скачал http://www.scribd.com/doc/17569145/Joomla-Component-Development-PDF вот ето (531 КБ! - 58 страниц). Теперь буду всё в кучу собирать и мудрить.
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Информация по написанию компонента
« Ответ #206 : 24.02.2010, 12:12:26 »
О да.. Это Ваше творение? Читал уже вот и хотел узнать - а чего это автор "ушёл" в админку. Тогда понятно - принцип такой же, тогда переделываю под frontend. Спасибо!
Ушел я в админку, потому что компонент, который использую как пример больше для админской части. Но как я уже говорил - принципы работы с базой данных одинаковый как с бэкенда так и с фронтенда.
*

viroff

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
  • потому что не все йогурты одинаково полезны...
Re: Информация по написанию компонента
« Ответ #207 : 26.02.2010, 22:47:16 »
оч информативно. для меня это пока единственный способ замутить компонент - так чтоб работал и быстро (т.к. времени у меня на это никогда не хватает)
*

LALALA

  • Новичок
  • 4
  • 0 / 0
Re: Информация по написанию компонента
« Ответ #208 : 01.03.2010, 10:45:20 »
Добрый день. Ребята при написания компонента столкнулся с трудностью. Может у кого то есть идеи или оригинальные решения. Проблема описана здесь
*

viroff

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
  • потому что не все йогурты одинаково полезны...
Re: Информация по написанию компонента
« Ответ #209 : 08.03.2010, 21:34:12 »
здравствуйте вновь! у меня такие вопросики - первый по форуму - как повысить пользователю карму? (чего-то не нашёл).
второй не менее интересный:
вот маюсь-парюсь с удалением записи из таблицы - соответственно такая реализация:
есть страничка - на ней таблица с кучей строк (строки из базы получаю, добавление с вашей помощью реализовал, (только теперь сижу во фронтэнде) - так вот, в таблице в каждой строчке есть кнопочки (удалить, редактировать соответствующую строку - запись в бд), так вот, собственно, вопрос: можно ли таким путём идти? и как вызывать метод делит модели (я его в модели прописал) из вью? если таск передавать, то у меня ж ещё редактирование есть - как тут быть?

Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

При попытке войти в админку 404 ошибка компонента

Автор omezik

Ответов: 4
Просмотров: 2397
Последний ответ 31.08.2019, 22:41:46
от Taatshi
Вывод компонента в качестве модуля

Автор fMichail

Ответов: 4
Просмотров: 2967
Последний ответ 06.08.2014, 15:16:29
от anar4ik
Переменные, доступные из любого компонента

Автор Serjo_man

Ответов: 3
Просмотров: 1522
Последний ответ 03.02.2014, 05:22:00
от Arkadiy
Работа компонента Ninja RSS 1.1.11 на Joomla 1.5.26

Автор Adam.K

Ответов: 1
Просмотров: 1433
Последний ответ 16.12.2013, 21:26:31
от Adam.K
Доработка компонента - нужна помощь

Автор wfire

Ответов: 5
Просмотров: 1353
Последний ответ 24.09.2013, 13:17:28
от robert