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

Определить id товара


Neumann

Recommended Posts

Добрый день.

 

Подскажите, пожалуйста.

Я пишу свой небольшой модуль. Всё получилось, только один момент не могу понять.

 

Как получить id продукта в контроллере в catalog-части своего модуля?

 

Единственный вариант, который я пока вижу - получать из $_GET['product_id'], но если урл изменен, то это не сработает?

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


в контроллере моего модуля (в части catalog)

 

<корень сайта>/catalog/controller/module/<название_моего_модуля>.php

 

но в целом в итоге весь модуль всегда будет вызываться на странице товара (точнее говоря результат работы модуля всегда будет отображаться на странице товара). И нужно передать в контроллер, какой id у товара.

 

 

да вообще в целом понять - как узнать id товара на странице товара. 

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


Извините, но это неправильный ответ на мой вопрос.

Во-первых, в моем контроллере нет свойства-объекта request (нужно отдельно создавать объект).

Во-вторых, get - это свойства-массив класса Request, а не метод (нужны квадратные скобки, а не круглые).

 

То есть то, что вы хотели мне сказать, пишется так.

$req = new Request();
$req->get['product_id'];
 
НО
это ведь будет работать, только если url не изменен, то есть такого вида /index.php?route=product/product&product_id=42
 
А у меня возможно будет чпу-урлы. То есть мне нужно универсальный способ.получения id продукта
 
Никак не могу найти, как же это получить  :unsure:
Надіслати
Поділитися на інших сайтах


А вы проверили, что утверждаете, что это неправильный ответ? И так безапелляционно...

 

А теперь внимательно смотрите!!!!

abstract class Controller {
	public function __construct($registry) {
		$this->registry = $registry;
	}

Видите конструктор?

 

А вот вам

// Request
$request = new Request();
$registry->set('request', $request);

Еще до создания contoller

// Front Controller
$controller = new Front($registry);

Так что...

 

 

 

НО
это ведь будет работать, только если url не изменен, то есть такого вида /index.php?route=product/product&product_id=42

Это будет работать и при ЧПУ и не ЧПУ

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

Извините, конечно, если мои слова прозвучали для вас как-то грубо. Я очень благодарен вам за ответы)

 

Я сейчас проверил еще раз)

Насчет того, что свойство $this->request нету - моя ошибка! На самом деле есть. Тут вы меня правильно поправили, извините)

 

Однако ваш пример все равно не сработал бы (и не сработал, когда я первый раз пробовал)

потому что вы после get поставили круглые скобки, а метода get (по крайней мере в моей версии 1.5.6.1) нет.

есть публичное свойство-массив get! так что нужны квадратные скобки.

 

Так что... )

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


ну да... я ошибся...

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

 

есть публичное свойство-массив get! так что нужны квадратные скобки.

Да-да....

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

И по поводу чпу

 

 

Это будет работать и при ЧПУ и не ЧПУ

 

Вы уверены?

Я смотрел в классе Request. Свойство get просто заполняется из глобального массива $_GET. А откуда там будет product_id, если строка адреса будет например site.ru/products/supertovar/

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


Вы уверены?

 

А вы проверили?

 

чтоб уж окончательно добить цитированием кода...

из seo_url

if (isset($this->request->get['_route_'])) {
			$parts = explode('/', $this->request->get['_route_']);
			
			foreach ($parts as $part) {
				$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE keyword = '" . $this->db->escape($part) . "'");
				
				if ($query->num_rows) {
					$url = explode('=', $query->row['query']);
					
					if ($url[0] == 'product_id') {
						$this->request->get['product_id'] = $url[1];
Надіслати
Поділитися на інших сайтах

  • 5 years later...

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

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

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

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

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

Вхід

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

Вхід зараз
×
×
  • Створити...

Important Information

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