Как перенаправить посетителя на страницу 404?

[10 ноября 2016 г.]    Российская сборка Magento 2.49.12
Magento 2: модули и услуги
  • Тема закрыта
#1 SanyaGarik
  • Группа: Пользователь
  • Сообщений: 9
  • Регистрация: 13.01.2012

13.01.2012 17:47

Подскажите, пожалуйста, как отобразить 404 страницу в такой ситуации:
Есть 2 типа товаров: co статусом Yes и со статусом No. Мне нужно, что бы при обращении
к товару со статусом No через id ( magento/index.php/quotes/index/view/id/4/ ), выводилась 404 страница (при этом сам товар в базе существует)

#2 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

13.01.2012 17:48

Что вы обозначаете термином «статус No»?

#3 SanyaGarik
  • Группа: Пользователь
  • Сообщений: 9
  • Регистрация: 13.01.2012

13.01.2012 18:04

Это поле у товаров в моем модуле, наряду с id и описанием, вот show create моей таблицы:
CREATE TABLE `freaks_quotes` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(128) default NULL,
`dscr` text,
`image` varchar(128) default NULL,
`status` smallint(1) default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8

В поле статус находится либо 1 либо 0 (я собираюсь использовать это поле чтоб показать, доступен товар или нет)

#4 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

13.01.2012 18:08

Контроллер quotes — не стандартный, а ваш, вот и обрабатывайте запрос, как хотите. В чём проблема-то?

#5 SanyaGarik
  • Группа: Пользователь
  • Сообщений: 9
  • Регистрация: 13.01.2012

13.01.2012 18:10

у меня там на viewAction написана такая функция:
public function viewAction()
{
$quote_id = (int)$this->getRequest()->getParam('id');
if (!$quote_id) {
$this->_forward('noRoute');
}
$this->loadLayout();
$this->getLayout()
->getBlock('quote.item')
->setQuoteId($quote_id);
try {
$this->renderLayout();
} catch (Exception $e) {
Mage::logException($e);
$this->_forward('noRoute');
}
}
Не могу понять, как в нее встроить if который проверяет статус, и как из контроллера отобразить 404 страницу?

#6 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

13.01.2012 18:14

Значит, код писали не аы, а вы его скопировали и даже не понимаете, что там написано.
$this->_forward('noRoute');
— это и есть перенаправление посетителя на системную страницу-заглушку в случае отсутствия в системе запрашиваемой посетителем страницы.

#7 SanyaGarik
  • Группа: Пользователь
  • Сообщений: 9
  • Регистрация: 13.01.2012

13.01.2012 18:18

Да, но если перед ним вставить
$quote = $this->getQuote();
if ($quote->getStatus()==1) $this->_forward('noRoute');
То не работает, возможно я не правильно пытаюсь получить информацию о Quote- "$quote = $this->getQuote()"?

#8 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

13.01.2012 18:20

Какое отношение имеет программный код
$quote = $this->getQuote();
к задаче «перенаправить посетителя на страницу 404»?

#9 SanyaGarik
  • Группа: Пользователь
  • Сообщений: 9
  • Регистрация: 13.01.2012

13.01.2012 18:26

Для того чтобы при вводе адреса, например, magento/index.php/quotes/index/view/id/4/ , проверялась quote с id= 4, определялся ее статус, и если он равен 0, то происходило
$this->_forward('noRoute');

$quote = $this->getQuote();
я использовал, т.к. не знаю как извлечь данные о quote, сделал по аналогии с шаблоном.
В шаблоне у меня
<?php $quote = $this->getQuote() ?>
<h1><?php echo Mage::helper('freaks_quotes')->__('View quote "%s"', $quote->getName()) ?></h1>
<h4><?php echo Mage::helper('freaks_quotes')->__('Quote`s id "%s"', $quote->getId()) ?></h4>
<h4><?php 
if ($quote->getStatus()==1) echo "Quote`s status: \"Yes\"";	 
elseif ($quote->getStatus()==0) echo "Quote`s status: No"; ?></h4>
<p><?php echo '<img src="'.$quote->getImage().'" height="200"\>'; ?></p>
<h4><?php echo "Content:</h4>".$quote->getDscr() ?>




       


#10 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

13.01.2012 18:28

Одна тема — один вопрос.
Как перенаправить посетителя на страницу 404 — я ответил.
Другие свои проблемы в эту тему мешать не надо.

Поделиться темой: