Клиентский модуль не работает в локальном пуле кодов [дубликат]
Я хочу внести некоторые незначительные изменения в AccountController.php
.
Итак, у меня есть копия AccountController.php
из
app/code/core/Mage/Customer/controllers/AccountController.php
чтобы
app/code/local/Mage/Customer/controllers/AccountController.php
Но это не работает ни в коем случае?
3 answers
Ваш код должен выглядеть примерно так...
Config.xml
<?xml version="1.0"?>
<config>
<frontend>
<routers>
<customer>
<args>
<modules>
<[vendor]_[modulename] before="Mage_Customer">[Vendor]_[ModuleName]</[vendor]_[modulename]>
</modules>
</args>
</customer>
</routers>
</frontend>
</config>
И ваш класс
Приложение/код/локальное/[Поставщик]/[Имя модуля]/controllers/AccountController.php
<?php
require_once Mage::getModuleDir('controllers', 'Mage_Customer').DS.'AccountController.php';
class [Vendor]_[Module]_AccountController extends Mage_Customer_AccountController
{
// do code
}
В качестве примечания, копирование классов блоков/моделей в локальный пул кода никогда не является хорошей идеей. Это увеличивает боль, которую вы испытаете при попытке обновления, потому что в тех файлах, которые вам придется скопировать, могут быть изменения.
Копирование файлов в локальный пул кода будет работать только для блоков, помощников и моделей. Вы не можете переопределить контроллеры, используя этот метод, так как они не загружаются автоматически, как другие классы.
Следуйте этому вопросу ссылка
Создание пользовательского модуля выглядит следующим образом:
Шаг 1: - Создайте файл Custom_Module.xml в app\etc\module\Custom_Module.xml и добавьте приведенный ниже код.
<?xml version="1.0"?>
<config>
<modules>
<Custom_Module>
<active>true</active>
<codePool>local</codePool>
<version>0.1.0</version>
</Custom_Module>
</modules>
</config>
Шаг 2: - Создайте файл config.xml в app\code\local\Custom\Module\etc\config.xml и добавьте приведенный ниже код.
<?xml version="1.0"?>
<config>
<modules>
<Custom_Module>
<version>0.1.0</version>
</Custom_Module>
</modules>
<global>
<rewrite>
<custom_module_customer_accountcontroller>
<from><![CDATA[#^/customer/account/#]]></from> <!-- Mage_Customer_AccountController -->
<to>/module/customer_account/</to> <!-- Custom_Module_Customer_AccountController -->
</custom_module_customer_accountcontroller>
</rewrite>
</global>
</config>
Шаг 3: - Создайте файл AccountController.php в app\code\local\Custom\Module\controllers\Customer\AccountController.php и добавьте следующее код.
<?php
require_once "Mage/Customer/controllers/AccountController.php";
class Custom_Module_Customer_AccountController extends Mage_Customer_AccountController{
// here your function
}
Надеюсь, это поможет!