Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Передача значения переменной из контроллера в другой контроллер


butya4ok

Recommended Posts

Здравствуйте. Помогите, пожалуйста, советом.

Версия Opencart 2.1.0.2

 

Суть вопроса:

В каждой категории в левом меню выводим ссылку на информационную страницу (представление: catalog/view.../information/information.tpl ;) контроллер: catalog/controller/information/information.php).

Содержимое информационной страницы - динамическое. В частности, содержит вывод определённой строки, в зависимости от названия категории, с которой мы перешли на эту страницу.

Создал в контроллере категорий методы, переменную и присваивание ей значений. Заходим в категорию - значение переменной генерируется правильно (проверил выводом переменной в category.tpl

Как мне передать значение этой категории в контроллер information.php для вывода в представлении information.tpl?

Можно ли эту переменную сделать "глобальной" ("сквозной")? И, главное, как?

 

Рассматривал:

1. Передачу методом post при клике по ссылке

2. Добавить ручками таблицу в базу данных, отредактировать модель категории и информации, чтобы при открытии категории значение писалось в таблицу, а при открытии информационной страницы вытягивать его из базы.

3. Использовать сессии? :huh:

 

Есть простое решение? Спасибо.

 

Надіслати
Поділитися на інших сайтах


Подпишусь, что бы не потерять интересную тему.

Заодно пять копеек вставлю:)

 

 

Цитата

В каждой категории в левом меню выводим ссылку

А как Вы её выводите?

 

1) Потому что, если категорий мало, то можно сделать её html модулем и каждой категории в схемах назначить свой модуль.

или

2) Можно перед выводом проверять кейсами и подставлять нужную ссылку в зависимости от 

Цитата

Заходим в категорию - значение переменной генерируется правильно

Зачем эта переменная в information.php? делайте проверку в категории (ну, чиста как вариант).

 

Для обоих случаев логика другая, не такая, как у Вас:

В каждой категории ссылка на свою отдельную страницу информации. Никто не запрещает сделать одинаковый текст ссылки, но разные целевые страницы. И тогда в catalog/controller/information/information.php никакая проверка и никакая переменная не нужна вовсе.

Змінено користувачем florapraktik
Надіслати
Поділитися на інших сайтах


В 18.11.2017 в 19:27, florapraktik сказал:

А как Вы её выводите?

 

1) Потому что, если категорий мало, то можно сделать её html модулем и каждой категории в схемах назначить свой модуль.

или

2) Можно перед выводом проверять кейсами и подставлять нужную ссылку в зависимости от 

 

Временно вывожу статикой - просто вставил в .tpl нужную ссылку (на информационную страницу).

В 18.11.2017 в 19:27, florapraktik сказал:

Зачем эта переменная в information.php? делайте проверку в категории (ну, чиста как вариант).

 

Мне значение этой переменной необходимо для генерации соответствующего содержимого целевой информационной страницы.

Там несколько проверок условий. В зависимости от значения переменной генерируется разное содержимое.

 

В 18.11.2017 в 19:27, florapraktik сказал:

Для обоих случаев логика другая, не такая, как у Вас:

В каждой категории ссылка на свою отдельную страницу информации. Никто не запрещает сделать одинаковый текст ссылки, но разные целевые страницы. И тогда в catalog/controller/information/information.php никакая проверка и никакая переменная не нужна вовсе.

Изменено вчера в 19:34 пользователем florapraktik

Объясню, почему не хочу делать разные целевые страницы.

Есть задача. В определённой папке docs на сервере есть несколько подпапок 1,2,3 (условно и с упрощениями). В папках находятся файлы (один или несколько в каждой).

Что требуется.

а) Есть общая информ страница. Её содержимое генерируется динамически. В содержимом показано дерево вложенных папок и список вложенных файлов (с возможностью скачать файлы). Если клиент через фтп добавляет папку 4,5... и заливает туда файлы, то это автоматически будет отображаться в теле информ. страницы.

Эта часть сделана и работает норм. 

 

А вот с этой частью трабл (для этой части создана отдельная страница, на которую ведёт ссылка из левого меню)

б) Если мы находимся в категории А и кликаем по ссылке на информ страницу, то эта страница показывает дерево папок и файлов только из подпапки 1. Для Б - из подпапки 2 и т.п. Так что перед генерацией содержимого мне необходимо проверить значение переменной, которое связано с названием рубрики, из которой мы перешли по ссылке.

 

Если делать всё отдельными страницами, то при добавлении новой категории или подпапки с документами придётся в админке сайта добавлять новую информ страницу, для которой править код, выводить отдельную новую ссылку в колонке слева...

Надіслати
Поділитися на інших сайтах


Ну, я так вообще не программист. Но я учусь.:)

А почему нельзя гет параметрами? Безопасность какая-нибудь, да? Но как тогда сортировки и фильтра работают с гет параметрами?

 

Надіслати
Поділитися на інших сайтах


2 часа назад, florapraktik сказал:

А почему нельзя гет параметрами? Безопасность какая-нибудь, да? Но как тогда сортировки и фильтра работают с гет параметрами?

Возможно, задачу можно решить гет-запросом.

Я прошу совета у знающих, можно ли передать значение переменной, не используя модель и работу с БД.

Надіслати
Поділитися на інших сайтах


4 минуты назад, MikeTheRaven сказал:

Можно и гет-запросом решить. Добавляете категорию к нужной ссылке


if (isset($this->request->get['route']) && $this->request->get['route'] == 'product/category' && !empty($this->request->get['path'])) {
    $this->url->link('information/information', ['information_id' => $result['information_id'], 'category_id' => $this->request->get['path']]);
}

Это я дописываю в контроллере category.php?

 

5 минут назад, MikeTheRaven сказал:

$this->request->get['category_id']

А это в контроллере information.php?

 

Благодарю Вас.

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.