Создание magento компонента с нуля - PullRequest
2 голосов
/ 20 августа 2010

Я пытаюсь создать модуль корзины magento, но ничего не получается.Вот мои шаги

Сначала я создаю XML в приложении и т.д. ...

<?xml version="1.0"?>
<config>
    <modules>
        <mywebwow_AdvancedCatalog>
            <active>true</active>
            <codePool>local</codePool>
        </mywebwow_AdvancedCatalog>
    </modules>
</config>

Затем я создаю папку в локальном пуле

/local/mywebwow/AdvancedCatalog/

Вв эту папку я положил следующие файлы

/Block/AdvanceCatalog.php
/controllers/indexController.php
/etc/config.xml

Я положил следующее в блок

AdvancedCatalog.php

<?php
class mywebwow_AdvancedCatalog_Block_Advancedcatalog extends Mage_Core_Block_Template
{
    public function _prepareLayout()
    {
        return parent::_prepareLayout();
    }

    public function getHelloworld()
    {
        return 'Hello world';
    }
}

indexController.php

<?php
class mywebwow_AdvancedCatalog_IndexController extends Mage_Core_Controller_Front_Action
{
    public function indexAction()
    {
        $this->loadLayout();
        $this->renderLayout();
    }
}

config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <mywebwow_AdvancedCatalog>
            <version>0.1.0</version>
        </myweboww_AdvancedCatalog>
    </modules>
    <frontend>
        <routers>
            <AdvancedCatalog>
                <use>standard</use>
                <args>
                    <module>mywebwow_AdvancedCatalog</module>
                    <frontName>advancedcatalog</frontName>
                </args>
            </AdvancedCatalog>
        </routers>
        <layout>
            <updates>
                <AdvancedCatalog>
                    <file>advancedcatalog.xml</file>
                </AdvancedCatalog>
            </updates>
        </layout>
    </frontend>
    <global>
        <blocks>
            <AdvancedCatalog>
                <class>mywebwow_AdvancedCatalog_Block</class>
            </AdvancedCatalog>
        </blocks>
        <helpers>
            <AdvancedCatalog>
                <class>mywebwow_AdvancedCatalog_Helper</class>
            </AdvancedCatalog>
        </helpers>
    </global>
</config>

когда я набираю website.com/index.php/advancedcatalog/

, я получаю 404. страница не найдена.

[РЕДАКТИРОВАТЬ]

Я изменил класс блока с MyWebwow_AdvancedCatalog_Block_AdvancedCatalog на MyWebwow_AdvancedCatalog_Block_Advancedcatalog

Я добавил advancedcatalog.xml, он выглядит как следующий ...

.xml
<?xml version="1.0"?>
<layout version="0.1.0">
    <advancedcatalog_index_index>
        <reference name="content">
            <block type="advancedcatalog/advancedcatalog" name="advancedcatalog" template="advancedcatalog/helloworld.phtml" />
        </reference>
    </advancedcatalog_index_index>
</layout>

тогда есть следующее, которое у меня уже было

/template/advancedcatalog/helloworld.phtml

helloworld.phtml

<h2><?php echo $this->getHelloworld(); ?></h2>

Ответы [ 2 ]

1 голос
/ 20 августа 2010

Несколько вещей, которые нужно исправить, надеюсь, одна заставит вас двигаться:

  1. Переместите ваш контроллер с indexController.php на IndexController.php.В чувствительных к регистру системах это очень хорошо может привести к тому, что контроллер не будет найден.

  2. Вы определили файл макета?(например, advancedcatalog.xml).Ваш файл определяет advancecatalog.xml, что может показаться опечаткой, хотя он может работать, если вы определили этот файл.

  3. У вас есть определенные представления?loadLayout попытается загрузить дескриптор макета для страницы и соответственно отобразить блоки.Здесь вам нужно будет указать свой блок advancedcatalog/advancedcatalog.Если у вас есть макет и шаблоны, пожалуйста, опубликуйте их.

  4. Не используйте camelcase для названия блока, это запутает Magento.Блок должен быть определен как advancedcatalog/advancedcatalog, но он будет преобразован в mywebwow_AdvancedCatalog_Block_Advancedcatalog (обратите внимание, нет второй заглавной буквы).Это будет проблемой.

Исправьте их и посмотрите, начнет ли это работать, дайте мне знать, если у вас все еще есть проблемы.

Спасибо, Джо


Вам не обязательно нужна модель, если вы ее не вызываете.Что касается # 4, вам решать, хотите ли вы использовать смешанный регистр на этом.В вашем конфигурационном файле вы указали префикс для AdvancedCatalog блоков, равный mywebwow_AdvancedCatalog_Block, поэтому смешанный регистр не должен быть проблемой.И наоборот, вы можете захотеть, чтобы тег внутри блоков был в нижнем регистре, чтобы при вызове ваших моделей вы могли придерживаться существующего соглашения Magento о нижнем регистре.Сделайте это:

<global>
    <blocks>
        <advancedcatalog>
            <class>mywebwow_AdvancedCatalog_Block</class>
        </advancedcatalog>
    </blocks>
....
0 голосов
/ 25 апреля 2013

@ числовой25: также очистить кэш, чтобы получить желаемый результат (т.е.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...