Новости Joomla

WT AmoCRM - RadicalMart плагин интеграции интернет-магазина на Joomla с CRM

👩‍💻 WT AmoCRM - RadicalMart плагин интеграции интернет-магазина на Joomla с CRM.Плагин умеет отправлять данные заказа из Joomla компонента интернет-магазина RadicalMart в AmoCRM, а так же оставлять примечания к сделке при смене статуса заказа (выберите необходимые статусы заказа RadicalMart в настройках плагина).Возможности плагина - создание сделок в AmoCRM в момент создания заказа в интернет-магазине RadicalMart- выбор воронки AmoCRM, в которой создавать сделки- выбор тега, которым будут помечаться созданные сделки- в комментарий к сделке при создании заказа пишутся:-- точная общая сумма заказа (Amo CRM не принимает дробные значения в поле бюджет, например с копейками)-- статус заказа-- информация о доставке (способ, адрес и комментарий)-- информация о способе оплаты-- контактные данные покупателя (могут отличаться от данных пользователя, создавшего заказ. Например, если доставка для другого человека)-- прямая ссылка на заказ в панели администрирования сайта-- список товаров заказа (опционально)добавление комментария к сделке при изменении статуса заказа в интернет-магазине RadicalMart (выберите необходимые статусы заказа в настройках плагина)-- добавляет в интерфейс просмотра заказа ссылку на сделку в AmoCRM, если таковая обнаружена (соответствие заказов и сделок хранится в базе данных)-- UTM-метки для сделки. Указывает, если на сайте используется комплект плагинов RadicalForm и WT AmoCRM - RadicalForm.
Для работы плагина необходима установка и настройка библиотеки WT Amo CRM library для Joomla версии 1.3.0 и выше.
Плагин бесплатный. Тестировался на Joomla 5.4 и RadicalMart 2.2.4.
Страница расширения и скачатьТак же:- Интернет-магазин RadicalMart- WT Amo CRM библиотека интеграции Joomla и AmoCRM- RadicalForm плагин обратной связи- WT AmoCRM - RadicalForm - плагин отправки сообщений из RadicalForm в AmoCRM@joomlafeed#joomla #crm #amocrm #radicalmart

Вышли релизы Joomla 6.0.1 и Joomla 5.4.1

Релиз Joomla 6.0.1 и Joomla 5.4.1

Проект Joomla рад сообщить о выпуске Joomla 6.0.1 и Joomla 5.4.1. Это релиз исправлений ошибок и улучшений для серии Joomla 6.1 и Joomla 5.4.

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

x00xer

  • Захожу иногда
  • 51
  • 1 / 0
Всем привет.

Собственно пишу свой компонент и вот с чем столкнулся.
Работаю с базой через JTable
Переопределил свой метод чек
Код
  function check()
    {
        if(!$this->name)
        {
            $this->setError(JText::_('Имя не должно быть пустым'));
            return false;
        }
        return true;

    }

в модели делаю вот так
Код
...
$row = $this->getTable('cals');
...
// Проверяем, корректна ли запись
        if (!$row->check()) {
            $this->setError($row->_errors[0]); // ВОТ ИМЕННО ЭТО МЕСТО МНЕ КАЖЕТСЯ СОВЕРшЕННО НЕ ВЕРНЫМ
            return false;
        }

и уже в контроллере
Код
...
if ($model->save(&$data)) {
                $msg = JText::_( 'Все гуд' );
            } else {
                JError::raiseWarning( 0, 'Ошибка  - '.$model->getError() );
            }

В общем то вопрос в том, что смущает вот эта строчка
            $this->setError($row->_errors[0]);
Наверняка есть более нормальное решение.. потому как это я открыл для себя тупым дебагом объектов  ;D
т.е. JTable словил ошибку, а мне ее нужно донести до контроллера что б тот красиво отреагировал на нее..

*

shprota

  • Давно я тут
  • 770
  • 53 / 1
  • Тружусь, не покладая рук
Re: Пишу свой первый компонент под J1.5
« Ответ #1 : 10.04.2009, 15:58:48 »
Код
 if (!$row->check()) {
            $this->setError($row->getError()); // Стандартный метод JObject
            return false;
}
*

x00xer

  • Захожу иногда
  • 51
  • 1 / 0
Re: Пишу свой первый компонент под J1.5
« Ответ #2 : 10.04.2009, 20:52:16 »
Спасибо, я правда потом этот метод нашел но все равно спасибо за участие.

Расскажите мне пожалуйста.. я вот перечитал кучу док по англ,
сейчас правда нашел пару ссылок на русском
вдруг кому надо
http://kjoomla.com/lesson
и вот тут
http://www.webflasher.net/ru/webmasteru/components-urok-4.html

но все равно не догоняю одну вещь... я вообще имею опыт работы с MVC но немного при другом подходе. Я привык к тому что вид это то что в джулма шаблон который подключает вид, но с этим можно свыкнуться, порой это может даже оказаться удобно (теоретически)

А вот что я до конца не понимаю, так это метод  display  причем он вроде как в контроллере есть так и в виде... его нужно обязательно вызывать ?
Я бы конечно мог слегкостью полазив по исходникам Джумлы научиться как надо сделать, однако они сами делают всегда так что не понять как верно то  .. :-)
и еще вот этот  момент .. видел в некоторых компонентах что передают в урле параметр view  - зачем ?
Как я понимаю есть таск от него можно плясать как хош... наверно view приает какой то гибкости которой я не осознаю ??

Буду рад любым подсказкам.
Спасибо,
*

shprota

  • Давно я тут
  • 770
  • 53 / 1
  • Тружусь, не покладая рук
Re: Пишу свой первый компонент под J1.5
« Ответ #3 : 10.04.2009, 20:58:17 »
Метод display контроллера передает управление view, вот и все.
А метод display y  view собственно является точкой входа.

Параметр view передается, потому что не нужно иметь по контроллеру на каждый view. В простых случаях контроллер вообще ничего не делает, а вся логика живет во view и model.
Стандартный контроллер просто вызывает view, который передан в запросе.
*

x00xer

  • Захожу иногда
  • 51
  • 1 / 0
Re: Пишу свой первый компонент под J1.5
« Ответ #4 : 14.04.2009, 10:58:10 »
Спасибо. понятно..
Вот это как раз и не привычно, обычно для всей логики используется контроллер.. ну все не как у людей ;D

В принципе мне ничего не мешает писать как привык и часть логики не относящейся к виду оставлять в контроллере, а уже логику которая требуется при формировании шаблона засовывать в вид, так может быть даже и удобнее -)

только вот все же переменная view в урле может как то все порушить, просто можно ввести какую нить фигню там и увидеть  белый экран с красной ошибкой что типа нет такого вида, как то это можно обыграть самому??
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Пишу свой первый компонент под J1.5
« Ответ #5 : 14.04.2009, 11:13:24 »
Я вот тут хочу тоже поинтересоваться - оправдано ли использование JTable? Стоит ли использвать этот класс для работы с базой?

По поводу контроллера - а как же метод $controller->execute? Он в принципе и является основной логикой, разве не так?
*

malus

  • Осваиваюсь на форуме
  • 49
  • 12 / 1
Re: Пишу свой первый компонент под J1.5
« Ответ #6 : 15.04.2009, 08:46:36 »
Я вот тут хочу тоже поинтересоваться - оправдано ли использование JTable? Стоит ли использвать этот класс для работы с базой?

Безусловно. Хорошо абстрагированный класс. Только есть одно БОЛЬШОЕ НО... Не стоит использовать CRUD-методы JTable. Или так: не стоит их использовать, предварительно внимательно не изучив исходники и хорошо не подумав.

По поводу контроллера - а как же метод $controller->execute? Он в принципе и является основной логикой, разве не так?
Он просто запускает метод контроллера.
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Пишу свой первый компонент под J1.5
« Ответ #7 : 15.04.2009, 10:25:23 »
Безусловно. Хорошо абстрагированный класс. Только есть одно БОЛЬШОЕ НО... Не стоит использовать CRUD-методы JTable. Или так: не стоит их использовать, предварительно внимательно не изучив исходники и хорошо не подумав.
Хмм, а тогда какой вообще в нём смысл? Ведь основное использование (как я понял) именно в CRUD?

Он просто запускает метод контроллера.
Не буду спорить :) Я только только "окунаюсь" в мир написания под Joomla! Вот-вот приступлю к написания простенького компонента и походу буду смотреть.
*

malus

  • Осваиваюсь на форуме
  • 49
  • 12 / 1
Re: Пишу свой первый компонент под J1.5
« Ответ #8 : 15.04.2009, 12:11:42 »
Хмм, а тогда какой вообще в нём смысл? Ведь основное использование (как я понял) именно в CRUD?

Основной его смысл в удобстве работы с моделями объектов, имеющих размещение в таблицах БД. Я с трудом себе представляю работу без его использования. Ну и по поводу CRUD я слегка передернул. Лично у меня большие претензии к методам publish, delete, checkout, move, reorder. Все остальное значительно облегчает жизнь.
Вышеозначенные методы легко реализуются в наследниках, что, сопсно, и делают разработчики встроенных расширений. Ведь нет же никаких оснований полагать, что они не знают о существовании встроенных методов :)

ЗЫ Кстати, publish, при неумелом использовании, организует уязвимость расширения в некоторых условиях. И я не видел чтобы об этом писали ни буржунете, ни в рунете.
« Последнее редактирование: 15.04.2009, 21:02:18 от malus »
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Пишу свой первый компонент под J1.5
« Ответ #9 : 15.04.2009, 14:18:38 »
Понятненько. Ну мир ООП я тоже только начал постигать, поэтому ещё не могу осмыслить всех возможностей и приемуществ.
*

x00xer

  • Захожу иногда
  • 51
  • 1 / 0
Re: Пишу свой первый компонент под J1.5
« Ответ #10 : 20.04.2009, 21:46:51 »
Насколько я понял из исходников JTable это обертка над стандартным джумловским классом для работы с БД.

Я пока его использую при сохранении/обновлении записей, мне нравиться вроде как ОРМ прям :)

Вероятно этот способ совсем не супер производительный, но мне нравиться ;)

Стандартный контроллер просто вызывает view, который передан в запросе.

А вот мне удобней и логичней хранить всю бизнесс-логику в контроллере.
В моделе работать с разными источниками данных
А в виде работаю с логикой связанной с отображением, и выбираю какой шаблон показать.

Как мне так такой способ для меня привычней...

А то получается контроллер как и бы нафик упал, а если подумать сколько всего происходит иницалзация, создание объектов и т.д.. и всго для того что бы вызвать вид, в котором начнутся всякие пертурбации? нее  :P
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Пишу свой первый компонент под J1.5
« Ответ #11 : 23.04.2009, 21:24:06 »
У меня вообще фигня с валидацией. Переопределил check() но он тупо не хочет работать :( Уже всё перепроверил несколько раз, но хоть убей не получается. Может кто подскажет? Вот мои действия по тестированию check():

Переопределение в JTable:

   function check()
	
{
	
	
if((!
$this->nick) || (trim($this->nick) == ''))
	
	
{
	
	
	
$this->setError(JText::_('Nick should be specified'));
	
	
	
return 
false;
	
	
}
	
	
return 
true;
	
}


Метод сохранения записи в модели:

   public function save($test)
	
{
	
	
$table = &$this->getTable('Test');
	
	

	
	
if (!
$table->bind($test))
	
	
{
	
	
	
$this->setError($table->getError());
	
	
}

	
	
if (
$table->check())
	
	
{
	
	
	
if (!
$table->store(true))
	
	
	
{
	
	
	
	
$this->setError($table->getError());
	
	
	
}
	
	
}
	
	
else
	
	
{
	
	
	
$this->setError($table->getError());
	
	
}
	
	
return 
true;
	
}


Ну в контроллере соответственно:

   function save()
	
{
	
	
$data JRequest::get('post');
	
	
$model $this->getModel('Test');
	
	
if (
$model->save($data))
	
	
{
	
	
	
$message JText::_('Test saved');
	
	
}
	
	
else
	
	
{
	
	
	
$message JText::_('Test save failed');
	
	
	
$message .= '['.$model->getError().']';
	
	
	

	
	
}
	
	
$this->setRedirect('index.php?option=com_test'$message);
	
}


Я даже пытался в check() сразу добавить false, но всё равно при сохранении пустой записи я получаю сообщение Test saved.
*

x00xer

  • Захожу иногда
  • 51
  • 1 / 0
Re: Пишу свой первый компонент под J1.5
« Ответ #12 : 24.04.2009, 12:08:37 »
Вот как это делаю я

в контроллере есть функция
Код: php
...
$model = & $this->getModel('cals');

 if ($model->addCal(&$data)) {
                $msg = JText::_( 'saved success' );
            } else {
                JError::raiseWarning( 0, 'Errors saved ххххх - '.$model->getError() );
            }
       // }
       
        $this->setRedirect($link, $msg);
    }

в модели есть метод
Код: php
function addCal($data)
    {
        $row = $this->getTable('cals');
       
       
       
       
        if (!$row->bind($data)) {
            $this->setError($row->getError());
            return false;
        }
         
     
        if (!$row->check()) {
       
   
            $this->setError($row->getError());
            return false;
        }

     
        if (!$row->store()) {
            $this->setError($row->getError());
            return false;
        }

        return true;
 
    }

ну и в классе таблицы переопределил метод чек

Код: php
function check()
    {
        if(empty($this->name))
        {
            $this->setError(JText::_('Name can not be empty'));
            return false;
        }
        return true;

    }
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Пишу свой первый компонент под J1.5
« Ответ #13 : 25.04.2009, 10:58:13 »
Сделал, всё равно получаю Test saved :( У меня такое ощущение, что check() вообще не вызывается.
*

x00xer

  • Захожу иногда
  • 51
  • 1 / 0
Re: Пишу свой первый компонент под J1.5
« Ответ #14 : 25.04.2009, 12:20:28 »
Попробуй в своем переопределенном методе чек первой строчкой сделать
var_dump($this); die();
и покажи чего там у тебя
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Пишу свой первый компонент под J1.5
« Ответ #15 : 25.04.2009, 12:25:55 »
Сделал, всё равно получаю Test saved :( У меня такое ощущение, что check() вообще не вызывается.
*

x00xer

  • Захожу иногда
  • 51
  • 1 / 0
Re: Пишу свой первый компонент под J1.5
« Ответ #16 : 26.04.2009, 12:14:12 »
ну значит ты в эту ф-цию не попадаешь совсем ... значит где от какая то очепятка
*

x00xer

  • Захожу иногда
  • 51
  • 1 / 0
Re: Пишу свой первый компонент под J1.5
« Ответ #17 : 26.04.2009, 12:17:39 »
а ну так смотри у тебя ж нету ретурнов
там где ты ожидаешь ошибок у тебя нету возвратв

вот смотри как у тебя

   

if ($table->check())
{
if (!$table->store(true))
{
$this->setError($table->getError());
}
}

а надо

if ($table->check())
{
if (!$table->store(true))
{
$this->setError($table->getError());
return false;
}
}
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Пишу свой первый компонент под J1.5
« Ответ #18 : 26.04.2009, 12:22:51 »
x00xer ты был прав!  Очепятка сокрылась в файлике /tables/test.php - я класс закрыл до метода check()  и получалось, что check() не вызывался как метод класса.

Держи +1 за помощь ;)

P.S.
Ну и ретёрны тоже надо было поставить.
*

CBETO4

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
Re: Пишу свой первый компонент под J1.5
« Ответ #19 : 01.05.2009, 00:50:16 »
вот такой вопрос, делаю компонент, выводящий в цикле инфу из БД + сортировка. Не могу понять куда в какие файлы компонента разложить модуль. Что кладем в контроллер, что в view.html и что в дефолт шаблон... Подскажите плиз.
*

x00xer

  • Захожу иногда
  • 51
  • 1 / 0
Re: Пишу свой первый компонент под J1.5
« Ответ #20 : 01.05.2009, 09:07:44 »
вот такой вопрос, делаю компонент, выводящий в цикле инфу из БД + сортировка. Не могу понять куда в какие файлы компонента разложить модуль. Что кладем в контроллер, что в view.html и что в дефолт шаблон... Подскажите плиз.
Что значит в файлы компонента разложить модуль ?
тут где то в соседней теме я давал ссылки на русскую документацию по этому делу, поищи, это должно помочь
*

x00xer

  • Захожу иногда
  • 51
  • 1 / 0
Re: Пишу свой первый компонент под J1.5
« Ответ #22 : 04.05.2009, 16:02:28 »
 !!!???!!!
Народ подскажите можно ли как то из админской части достучаться до модели которая на фронте используется ?
*

shprota

  • Давно я тут
  • 770
  • 53 / 1
  • Тружусь, не покладая рук
Re: Пишу свой первый компонент под J1.5
« Ответ #23 : 04.05.2009, 16:04:25 »
!!!???!!!
Народ подскажите можно ли как то из админской части достучаться до модели которая на фронте используется ?

Ну сделать ее файлу require
*

x00xer

  • Захожу иногда
  • 51
  • 1 / 0
Re: Пишу свой первый компонент под J1.5
« Ответ #24 : 04.05.2009, 22:57:05 »
Отличный способ :-)

я имел ввиду есть способ который зашит во фреймворк.
типа
$this->getModel но так что б этот метод мог подключать модель для фронта или наоборот.

Просто при вашем способе надо будет после подключения файла создавать  объект..
оно то конечно ничего страшного, но нахрена тогда они писали такой фреймворк ?
*

shprota

  • Давно я тут
  • 770
  • 53 / 1
  • Тружусь, не покладая рук
Re: Пишу свой первый компонент под J1.5
« Ответ #25 : 04.05.2009, 23:15:54 »
фреймворк совершенно не обязан покрывать 100% нужд всех возможных его пользователей.
Нет никакой сложности сделать require, так нафига городить огород?
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Пишу свой первый компонент под J1.5
« Ответ #26 : 04.05.2009, 23:18:27 »
Да есть способ! Переопредлить путь можно в конструкторе контроллера. Попробуй так:

Код: php
function __construct()
{
$path = JPATH_COMPONENT.DS.'models';
$this->addModelPath($path);
parent::__construct();
}
*

shprota

  • Давно я тут
  • 770
  • 53 / 1
  • Тружусь, не покладая рук
Re: Пишу свой первый компонент под J1.5
« Ответ #27 : 04.05.2009, 23:21:17 »
Хехе :) я еще сложнее могу написать, только зачем?
*

shprota

  • Давно я тут
  • 770
  • 53 / 1
  • Тружусь, не покладая рук
Re: Пишу свой первый компонент под J1.5
« Ответ #28 : 04.05.2009, 23:23:27 »
А главное, что во фреймворке есть архитектурный глюк: JController::getModel всегда возвращает новый объект, а не кеширует старый. И во view этот объект не передается.
Вот это реальный бред, а модель создать - фигня :)
*

x00xer

  • Захожу иногда
  • 51
  • 1 / 0
Re: Пишу свой первый компонент под J1.5
« Ответ #29 : 04.05.2009, 23:47:35 »
да круто :-) что тут сказать .. веселый фреймворк...
конечно на 100 процентов и не должен это верно, но просто как то сильно уж топорно сделан мезнизм наверно из-за это обратной совместимости они так все искорячили... но зато клиентуру не потеряли ... а мы мучаемся -)


 я вот тут сейчас еще с одним моментом пытаюсь воевать

Вот кстати еще момент не знаю известен он или нет..

Мне понадобилось в цикле  делать вставку небольшого количества строк в таблицу
я решил использовать JTable
и в цикле каждый раз присваивал новые значения объекту (через bind() ) однако он упорно сохранял только первую запись а после только эту же запись обновляет
нашел метод reset() который из доки по идее возвращал все значения к дефолтным... однако это не помогло, посмотрев в код я увидил
Код: php
$k = $this->_tbl_key;
foreach ($this->getProperties() as $name => $value)
{
if($name != $k)
{
$this->$name = $value;
}
}
т.е. значение первичного ключа он к дефолту не возвращает ..

интересно и как правильно пользоваться
bind()
check()
store()
в цикле ?




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

Как пользователь может удалить свой аккаунт?

Автор selimoff

Ответов: 6
Просмотров: 3798
Последний ответ 22.11.2017, 22:42:32
от Ecos
Надо переделать готовый компонент Генератор Купонов J2.5 на J1.5

Автор mkoff

Ответов: 3
Просмотров: 2241
Последний ответ 18.12.2014, 10:22:04
от assa1988
Компонент вывода информации из внешней базы данных

Автор rambeer

Ответов: 33
Просмотров: 11626
Последний ответ 12.09.2014, 05:01:34
от Mad_Doc
Модифицировать компонент

Автор karabert

Ответов: 0
Просмотров: 1600
Последний ответ 28.11.2011, 22:39:04
от karabert
Новый компонент. Реализация поиска/фильтрации таблицы в админке.

Автор passat

Ответов: 6
Просмотров: 3819
Последний ответ 26.03.2011, 12:21:45
от yunoshev