Исправьте за меня программный код для переопределения контроллера

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

20.04.2012 12:03

Добрый день.
Сегодня руководство предоставило задача разобраться с перегрузки контроллеров в системе Магента. К сожалению я с этим никогда не работал поэтому прошу помощи разобраться. Порывшись на форумах я несколько накинул, однако не могу разобраться почему оно не работает и не выводит в логах нужен мне текс. ниже привожу пример всего что делал.

Сначала я опредилився который контроллер буду перегружаты не отходил от найденной инструкции и перегружав то же контроллер app/code/core/Mage/Checkout/controllers/OnepageController.php
У себя создал контролер с тем же названием

<?php
// Подключаем класс родителя.
require_once 'Mage/Checkout/controllers/OnepageController.php';

// Наследуем его своим классом
class Firm_Blogpost_Checkout_OnepageController extends Mage_Checkout_OnepageController
{
  // Обеспечиваем вызов конструктора базового класса
  public function _construct()
  {
    parent::_construct();
  }
  
  // Перегружаем наш метод saveBillingAction()
  public function saveBillingAction()
  {
    // Сначала вызываем этот метод из базового класса
    parent::saveBillingAction();
    
    // А теперь здесь добавляем нужный нам функционал
    Mage::log('Hello from overloaded Controller!');
  }
}


потом добавил запись в свой конфиг файл
<?xml version="1.0"?>
<config>
      <modules>
        <Firm_Blogpost>
          <version>0.1.0</version>
        </Firm_Blogpost>
      </modules>
	  
   <global>
   
  <rewrite>
  <!--
    Здесь,в общем,после узла <rewrite> идет узел со следующим названием:
    <пространство имен_имя модуля_имя перегружаемого модуля_имя контроллера(без слова Controller)_имя метода экшена(без слова Action)>
  -->
    <firm_blogpost_checkout_onepage_savebilling>
      <from><![CDATA[#^/checkout/onepage/saveBilling/$#]]></from>
      <to>/blogpost/checkout_onepage/saveBilling/</to>
    </firm_blogpost_checkout_onepage_savebilling>
  </rewrite>
   
   
      <helpers>
       <blogpost>
           <class>Firm_Blogpost_Helper</class>
       </blogpost>
      </helpers>   

	  <blocks><blogpost><class>Firm_Blogpost_Block</class></blogpost></blocks>
	         <models>
            <blogpost>
                <class>Firm_Blogpost_Model</class>
                <resourceModel>blogpost_mysql4</resourceModel>
            </blogpost>
            <blogpost_mysql4>
                <class>Firm_Blogpost_Model_Mysql4</class>
                <entities>
                    <blogred>
                        <table>bloging</table>
                    </blogred>
                </entities>
            </blogpost_mysql4>
        </models>
        <resources>
            <blogpost_setup>
                <setup>
                    <module>Firm_Blogpost</module>
                </setup>
                <connection>
                    <use>core_setup</use>
                </connection>
            </blogpost_setup>
            <blogpost_write>
                <connection>
                    <use>core_write</use>
                </connection>
            </blogpost_write>
            <blogpost_read>
                <connection>
                    <use>core_read</use>
                </connection>
            </blogpost_read>
			
        </resources>
	 
   </global> 
   <admin>
			<routers>
				<blogpost>
					<use>admin</use>
					<args>
						<module>Firm_Blogpost</module>
						<frontName>blogpost</frontName>
					</args>
				</blogpost>
			</routers>
		    </admin><adminhtml>
		<menu>
			<blogpost module="blogpost">
				<title>Blogpost</title>
				<sort_order>100</sort_order>
				<children>
				<blogred module="blogpost">
						<title>Manage Blogred</title>
						<sort_order>0</sort_order>
						<action>blogpost/adminhtml_blogred</action>
					</blogred>
				</children>
			</blogpost>
		</menu>
		<acl>
			<resources>
				<all>
				    <title>Allow Everything</title>
				</all>
				<admin>
					<children>
						<blogpost translate="title" module="blogpost">
							<title>Blogpost</title>
							<sort_order>1000</sort_order>
							<children>
                                <blogred translate="title">
									<title>Manage Blogred</title>
								</blogred>
							</children>
					   </blogpost>
					</children>
				</admin>

			</resources>
		</acl>

		<layout>
			<updates>
				<blogpost>
				    <file>blogpost.xml</file>
				</blogpost>
			</updates>
		</layout>
	</adminhtml>

</config> 


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

20.04.2012 12:08

2 рабочих способа переопределения контроллера
Надо лишь аккуратно повторить их.
Если у вас не работают - используйте отладчик для диагностики своих ошибок.
Что тут ещё посоветовать - непонятно.
Не проводить же анализ и отладку кода за вас бесплатно...

#3 Роман Богданів
  • Группа: Пользователь
  • Сообщений: 11
  • Регистрация: 20.04.2012

20.04.2012 20:16

Ну в общем я не просил за меня править код я просто предоставил всю информацию чтобы помочь в моей вопросу было легче.

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

27.04.2012 00:21

с виду всё правильно
но возможно финальный слеш всё портит

попробуйте кусок

<firm_blogpost_checkout_onepage_savebilling>
      <from><![CDATA[#^/checkout/onepage/saveBilling/$#]]></from>
      <to>/blogpost/checkout_onepage/saveBilling/</to>
    </firm_blogpost_checkout_onepage_savebilling>


заменить на
<firm_blogpost_checkout_onepage_savebilling>
      <from><![CDATA[#^/checkout/onepage/(saveBilling)$#]]></from>
      <to>/blogpost/checkout_onepage/{$1}</to>
    </firm_blogpost_checkout_onepage_savebilling>


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

27.04.2012 00:28

мой рабочий пример
<save_address>
					<from><![CDATA[#^/checkout/onepage/(saveBilling|saveShipping)#]]></from>
					<to>/rug/onepage/{$1}</to>
			</save_address>


<?php
require_once 'app/code/core/Mage/Checkout/controllers/OnepageController.php';
class Сompany_Module_OnepageController extends Mage_Checkout_OnepageController 
{
....
    }

    public function saveShippingAction()
    {
 ...
       }
    }
}


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