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

platonische

  • Давно я тут
  • 320
  • 0
  • Парусные экспедиции vk.com/tc670
Как передать переменную из одного вида редактирования записи в другой вид. Так же необходима кнопка перехода на другой вид.

Поясню.
Есть виды Клиент/Клиенты и Заказ/Заказы. Элемент заказ содержит поле КЛИЕНТ_ИД

Как передать из вида Клиент, где мы знаем наш текущей ИД в вид ЗАКАЗ (новый заказ без ИД заказа).

Мысль такая:
Создаю кнопку в виде
Код
JToolBarHelper::custom( 'customer.addorder', '', '','COM_TURISM_BUTTON_ADD_ORDER' );

Создаю в контроллере task "addorder"
Вопрос как здесь получить ИД?

Здесь же загоняю ИД в сессию
Код
JFactory::getApplication()->setUserState('клиент ИД', 'значение');
 

в виде Заказ проверяю значение в моделе в функции getItem и если есть
Код
JFactory::getApplication()->getUserState('клиент ИД');
то в item подменяю значение

« Последнее редактирование: 23.03.2016, 16:46:49 от platonische »
Парусные экспедиции http://vk.com/tc670, сплавы на байдарках http://vk.com/magnittv_turism
*

NewUsers

  • Завсегдатай
  • 644
  • 51
Re: Передача переменной между видами
« Ответ #1 : 22.03.2016, 16:16:29 »
Вопрос как здесь получить ИД?

Код: php
<?php $id = JRequest::getInt('id'); ?>
*

platonische

  • Давно я тут
  • 320
  • 0
  • Парусные экспедиции vk.com/tc670
Re: Передача переменной между видами
« Ответ #2 : 22.03.2016, 22:38:29 »
Спасибо! Но что-то уперся в контроллер
Что надо для того чтобы task=customer.addorder делал операции какие-то и перенаправлял на другой task=order.edit (Контроллер order)
я создал в контроллере customer функцию JToolBarHelper::custom( 'customer.addorder', '', '','COM_TURISM_BUTTON_ADD_ORDER' );
Код
protected function addorder()
{
$customer_id = JRequest::getInt('id'); // получили ИД клиента
JFactory::getApplication()->setUserState('customer_id', $customer_id); // Сделали запись в сессию
$this->setRedirect(
JRoute::_(
'index.php', false
)
);
}
Что еще надо для task? Его надо регистрироваль или как?
и правильно ли я его вызвал?
view.php вида customer
Код
JToolBarHelper::custom( 'customer.addorder', '', '','COM_TURISM_BUTTON_ADD_ORDER' );
Парусные экспедиции http://vk.com/tc670, сплавы на байдарках http://vk.com/magnittv_turism
*

platonische

  • Давно я тут
  • 320
  • 0
  • Парусные экспедиции vk.com/tc670
Re: Передача переменной между видами
« Ответ #3 : 22.03.2016, 22:43:01 »
Видимо надо как-то определить task или недогоняю...
сменил на вот такое
Код
JToolBarHelper::cancel( 'customer.addorder', 'COM_TURISM_BUTTON_ADD_ORDER' );
и получил то что хотел, почему из JToolBarHelper::custom не отрабатывает?
Парусные экспедиции http://vk.com/tc670, сплавы на байдарках http://vk.com/magnittv_turism
*

b2z

  • Support Team
  • 7469
  • 742
  • Разраблю понемногу
Re: Передача переменной между видами
« Ответ #4 : 22.03.2016, 22:43:49 »
Цитировать
Что надо для того чтобы task=customer.addorder делал операции какие-то и перенаправлял на другой task=order.edit (Контроллер order)
Что значит перенаправлял? Такое невозможно. Перенаправление - это отображение уже другой страницы.

Кстати, JRequest::getInt замените на $this->input->getInt
*

platonische

  • Давно я тут
  • 320
  • 0
  • Парусные экспедиции vk.com/tc670
Re: Передача переменной между видами
« Ответ #5 : 23.03.2016, 16:16:12 »
Что значит перенаправлял? Такое невозможно. Перенаправление - это отображение уже другой страницы.
Собственно это и надо! В форме создания клиента view=customer хочу поставить кнопку "Добавить заказ", в действия этой кнопки хочу вложить следующее:
1. Сохранение (если клиент новый)
2. Сохранение ИД клиента в сессию
3. Перенаправление на view=order (создание нового элемента - заказа)
4. Заполнение поля customer_id по значению из сессии.

По большому счету у меня это вышло с кнопкой типа cancel, но вот с кнопкой типа custom не вышло. Почему?
custom мне кажется лучше т.к. я туда иконки свои поставлю. Ну и не буду дергать лишние методы.
Парусные экспедиции http://vk.com/tc670, сплавы на байдарках http://vk.com/magnittv_turism
*

platonische

  • Давно я тут
  • 320
  • 0
  • Парусные экспедиции vk.com/tc670
Re: Передача переменной между видами
« Ответ #6 : 23.03.2016, 16:46:26 »
Задача решена. В custom типе кнопке нужен обязательный пятый параметр, который говорит контроллеру работать со списком выбранных элементов (true) и (false) не работать со списком. Я этот параметр не указал - вот была и проблема.
Скажу что надо ставить true если кнопка выводится в виде списка и false если кнопка выводится в виде редактирования элемента
https://docs.joomla.org/Creating_a_toolbar_for_your_component
https://docs.joomla.org/JToolBarHelper/custom
Парусные экспедиции http://vk.com/tc670, сплавы на байдарках http://vk.com/magnittv_turism
*

platonische

  • Давно я тут
  • 320
  • 0
  • Парусные экспедиции vk.com/tc670
RE: Передача переменной между видами
« Ответ #7 : 23.03.2016, 16:49:35 »
Ну с сессией я поступил чуть иначе
Контроллер customer
Спойлер
[свернуть]

Далее получаем данные в моделе order и убиваем переменную из сессии чтоб не навредила.
модель order изменили loadFormData()
Спойлер
[свернуть]
Парусные экспедиции http://vk.com/tc670, сплавы на байдарках http://vk.com/magnittv_turism
*

b2z

  • Support Team
  • 7469
  • 742
  • Разраблю понемногу
RE: Передача переменной между видами
« Ответ #8 : 23.03.2016, 17:03:16 »
Код: php
$this->setRedirect(
    JRoute::_('index.php?option=com_turism&task=order.edit', false
);

Ну бред же - перенаправлять на другой контроллер. Только ради того, чтобы вызвать модель order? Сделайте всё в этом же addorder(), зачем нужно вызывать другой контроллер?
*

platonische

  • Давно я тут
  • 320
  • 0
  • Парусные экспедиции vk.com/tc670
RE: Передача переменной между видами
« Ответ #9 : 23.03.2016, 17:33:58 »
Код: php
$this->setRedirect(
    JRoute::_('index.php?option=com_turism&task=order.edit', false
);

Ну бред же - перенаправлять на другой контроллер. Только ради того, чтобы вызвать модель order? Сделайте всё в этом же addorder(), зачем нужно вызывать другой контроллер?

Не понял... Имеешь ввиду вот так
Код: php
$this->setRedirect(
    JRoute::_('index.php?option=com_turism&view=order&layout=edit', false
);

Если нет, то я не понимаю что можно по-другому.
Парусные экспедиции http://vk.com/tc670, сплавы на байдарках http://vk.com/magnittv_turism
*

platonische

  • Давно я тут
  • 320
  • 0
  • Парусные экспедиции vk.com/tc670
RE: Передача переменной между видами
« Ответ #10 : 23.03.2016, 17:35:58 »
ААА вон вы чего. Я не знаю же данных в этом виде для заказа да и не нужны они мне в виде "Клиент". Нужна возможность быстро перейти на добавление клиенту заказа.
По кнопе уходим в добавление заказа и там создаем.
Парусные экспедиции http://vk.com/tc670, сплавы на байдарках http://vk.com/magnittv_turism
*

platonische

  • Давно я тут
  • 320
  • 0
  • Парусные экспедиции vk.com/tc670
Парусные экспедиции http://vk.com/tc670, сплавы на байдарках http://vk.com/magnittv_turism
*

b2z

  • Support Team
  • 7469
  • 742
  • Разраблю понемногу
RE: Передача переменной между видами
« Ответ #12 : 24.03.2016, 10:24:37 »
ААА вон вы чего. Я не знаю же данных в этом виде для заказа да и не нужны они мне в виде "Клиент". Нужна возможность быстро перейти на добавление клиенту заказа.
По кнопе уходим в добавление заказа и там создаем.
Причём тут вид? Куда переходить? Вы что, после перехода что-то показываете клиенту? Нет. Вы по моему запутались в логике и MVC. Или это я не понимаю логики работы Вашего расширения.
*

platonische

  • Давно я тут
  • 320
  • 0
  • Парусные экспедиции vk.com/tc670
RE: Передача переменной между видами
« Ответ #13 : 24.03.2016, 16:53:39 »
Это админка.
Есть виды... Клиенты, Заказы.
В заказе есть поле КЛИЕНТ_ИД и нужно выбирать его при создании заказа (ЧЕРЕЗ админку)
Я хочу лишь чтобы можно было перейти из вида КЛИЕНТ в вид ЗАКАЗ, что бы при этом оператору не нужно было искать клиента для выбора его в заказе.
Поэтому в виде КЛИЕНТ я сделал кнопку "ДОБАВИТЬ ЗАКАЗ" постал на контроллер клиент.добавитьЗаказ там присвоил переменной в сессии значение КЛИЕНТ_ИД и сделал редирект на контроллер ЗАКАЗ.edit в моделе заказа где получаем данные для заполнения формы прочитал сессию, присвоил полю значение, удалил переменную сессии.

У меня работает, и это то что я хотел. Вопрос конечно правильно ли я это сделал?
Парусные экспедиции http://vk.com/tc670, сплавы на байдарках http://vk.com/magnittv_turism
*

b2z

  • Support Team
  • 7469
  • 742
  • Разраблю понемногу
Re: Передача переменной между видами
« Ответ #14 : 24.03.2016, 17:13:59 »
Цитировать
и сделал редирект на контроллер ЗАКАЗ.edit в моделе заказа
Редирект используется только в одном случае - перенаправить пользователя на нужную страницу. Он не используется для вызова другого контроллера и другой модели.

Что Вам мешает в методе addorder() контроллера сделать все действия без вызова другого контроллера?
*

platonische

  • Давно я тут
  • 320
  • 0
  • Парусные экспедиции vk.com/tc670
Re: Передача переменной между видами
« Ответ #15 : 24.03.2016, 17:21:21 »
Что Вам мешает в методе addorder() контроллера сделать все действия без вызова другого контроллера?
Отсутствие полей заказа. Заказов у клиента не 1.
Т.е. поля заказа клиенту не нужны всегда... Нужны лишь тогда когда создаем ему заказ.
Конечно если вставить еще одну форму со всеми ОБЯЗАТЕЛЬНЫМИ полями заказа и заполнить их, скрыть форму, если она не нужна, например через элементарный JS+CSS может быть соглашусь...
Парусные экспедиции http://vk.com/tc670, сплавы на байдарках http://vk.com/magnittv_turism
*

robert

  • Профи
  • 4077
  • 376
RE: Передача переменной между видами
« Ответ #16 : 24.03.2016, 17:39:41 »
Все равно не понял: в любом случае вам нужен ID клиента, правильно? Если он уже есть в $_REQUEST, то сразу втавить в форму, в противном случае - выбрать из списка, и все это делать только в виде ЗАКАЗ.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.
*

platonische

  • Давно я тут
  • 320
  • 0
  • Парусные экспедиции vk.com/tc670
RE: Передача переменной между видами
« Ответ #17 : 24.03.2016, 18:25:53 »
Все равно не понял: в любом случае вам нужен ID клиента, правильно? Если он уже есть в $_REQUEST, то сразу втавить в форму, в противном случае - выбрать из списка, и все это делать только в виде ЗАКАЗ.
Да чего непонятного? Во первых я решил что надо. Во вторых ДВА ВИДА а не один. ВИД КЛИЕНТ и ВИД ЗАКАЗ.
Создаем КЛИЕНТА - хорошо
Создаем ЗАКАЗ -хорошо, но при создании надо указать клиента - выбрать.
Так вот я добавил функцию создания ЗАКАЗА из вида КЛИЕНТ с передачей ИД КЛИЕНТА а не ЗАКАЗА
Парусные экспедиции http://vk.com/tc670, сплавы на байдарках http://vk.com/magnittv_turism
*

b2z

  • Support Team
  • 7469
  • 742
  • Разраблю понемногу
*

platonische

  • Давно я тут
  • 320
  • 0
  • Парусные экспедиции vk.com/tc670
RE: Передача переменной между видами
« Ответ #19 : 24.03.2016, 21:30:37 »
Вид order
layout - edit
Парусные экспедиции http://vk.com/tc670, сплавы на байдарках http://vk.com/magnittv_turism
*

platonische

  • Давно я тут
  • 320
  • 0
  • Парусные экспедиции vk.com/tc670
RE: Передача переменной между видами
« Ответ #20 : 24.03.2016, 21:45:16 »
блин... неужели так запутанно все понимается?

пример. Чтобы создать заказ для нового клиента оператор должен:
1. view=customer&layout=edit - создать клиента
2. перейти в вид view=orders
3. view=order&layout=edit - создать заказ
4. выбрать клиента в форме заказа
5. Заполнить другие поля.

Я хотел сделать и сделал так:
1. view=customer&layout=edit - создать клиента
2. переход по кнопке customer.addorder в view=order&layout=edit - создается заказ с заполненным полем клиента
3. Заполнить другие поля.

Всё и для этого я использовал сессию для передачи КЛИЕНТ_ИД
Парусные экспедиции http://vk.com/tc670, сплавы на байдарках http://vk.com/magnittv_turism
*

b2z

  • Support Team
  • 7469
  • 742
  • Разраблю понемногу
RE: Передача переменной между видами
« Ответ #21 : 24.03.2016, 21:50:30 »
Теперь ясно! Ну тогда конечно правильнее делать
Код: php
$this->setRedirect(
    JRoute::_('index.php?option=com_turism&view=order&layout=edit', false
);
*

Aleks.Denezh

  • Практически профи
  • 2806
  • 377
RE: Передача переменной между видами
« Ответ #22 : 24.03.2016, 22:34:29 »
Всё и для этого я использовал сессию для передачи КЛИЕНТ_ИД
Только зачем использовать сессию для этого не понятно!
Мой  блог по разработке на Joomla CMS!
Хотите отблагодарить материально? Мой WMR: R861060179016
*

robert

  • Профи
  • 4077
  • 376
Re: Передача переменной между видами
« Ответ #23 : 24.03.2016, 23:10:47 »
Понятно, ваша задача очень специфическая. Сессия не нужна
Код: php-brief
$id=$model->getState($this->getName().'.id',$table->$pkName);
$this->setRedirect(
    JRoute::_('index.php?option=com_turism&view=order&layout=edit&id='.$id, false
);
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

com_ajax передача данных из формы POST

Автор ChervonStudio

Ответов: 32
Просмотров: 509
Последний ответ 28.08.2017, 10:58:20
от onelawyer
[Решено] AJAX пагинация - подгрузка контента (в своём компоненте) Joomla 3.x

Автор ninth

Ответов: 15
Просмотров: 6997
Последний ответ 16.04.2017, 07:26:10
от ghostcom
[Решено] Получить в MODAL виде фильтры из вызывающего вида

Автор platonische

Ответов: 23
Просмотров: 334
Последний ответ 29.03.2017, 13:08:35
от platonische
[Решено] Проблема с созданием собственного типа поля

Автор batiskaf

Ответов: 2
Просмотров: 157
Последний ответ 22.03.2017, 21:48:31
от batiskaf
Разница между двумя датама

Автор SmokerMan

Ответов: 0
Просмотров: 196
Последний ответ 30.12.2016, 00:24:12
от SmokerMan