Перейти к содержанию
butya4ok

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

Рекомендуемые сообщения

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

Версия 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 сказал:

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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']]);
}

и далее в контроллере получаете id категории

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
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?

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всем спасибо.

Проблему решил передачей параметра методом GET в ссылке

 

Админы, закройте тему.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От Snoop3000
      Добрый день всем. Делаю свою страницу вывода нужной информации на печать, где надо вывести данные с \admin\controller\sale\order.php. Оттуда все что мне надо я вытянул, но не могу добраться до фото товара (отдельно контроллера своего нету, делаю все через order.php).
      То есть, создана таблица, где должна быть фото товара и его параметры. Что только не пробовал, даже добавил в order.php контроллер:
      $this->load->controller('catalog/product'); $data['kartinka'] = $product['image']; Но в файле info.tpl и дальше $kartinka просто пустое значение
      <img src="<?php echo $kartinka; ?>" style="float:left"> Моих знаний не хватает, я не могу понять как передать простое значение $product['image'] в другое место, отличающее от product.tpl.
    • От Granled
      Здравствуйте составил вот такой запрос к базе данных (необходимо иметь возможность быстро редактировать сумму заказа из формы заказа):
      $tsum = $this->db->query("SELECT total FROM oc_order WHERE order_id=414");
      Как подставить в него id мне более менее понятно, сама база с запроса возвращает правильные данные.
      Вопрос - правильно ли я сделал запрос, так как шаблон переменную не возвращает. Пишет Undefined variable , как ее сделать правильно?
      И вообще можно ли лезть в базу данных с контроллера, или только в модели?
    • От Granled
      Нужно прописать и вывести в админку новую переменную, конкретно в форме изменения заказа (версия 2.3)
      Вроде бы все просто, берем контроллер /admin/controller/sale/order.php и пишем в нем к примеру data['переменная'] = $this-> 'значение'; после public function getForm() {
      Далее пишем в файле шаблона <?php echo $переменная; ?> и дело сделано, переменная обозначена. Но я видимо делаю что то не так, так как вижу Notice: Undefined variable.
      Что я делаю не так и как это сделать правильно?
    • От GoldenScrew
      Здравствуйте,
      создавая свой контроллер, подключил загрузил в него уже существующий
       
       
      в подключенном контроллере есть переменная
       
       
      как теперь мне получить значение переменной $data['test']?
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.