Проблема с Ajax в Magento


Итак, вот моя структура модуля:

enter image description here

Таково содержание config.xml :

<?xml version="1.0"?>
<config>
    <modules>
        <Netgr_Gradd>
            <version>1.0.0</version>
        </Netgr_Gradd>
    </modules>
    <global>
        <blocks>
            <netgr_gradd>
                <class>Netgr_Gradd_Block</class>
            </netgr_gradd>
            <adminhtml>
                <rewrite>
                    <catalog_product_attribute_set_main>Netgr_Gradd_Block_Adminhtml_Addgroup</catalog_product_attribute_set_main>
                </rewrite>
            </adminhtml>
        </blocks>
        <helpers>
            <netgr_gradd>
                <class>Netgr_Gradd_Helper</class>
            </netgr_gradd>
        </helpers>
    </global>
    <admin>
        <routers>
            <adminhtml>
                <args>
                    <modules>
                        <netgr_gradd after="Mage_Adminhtml">Netgr_Gradd_Adminhtml</netgr_gradd>
                    </modules>
                </args>
            </adminhtml>
        </routers>
    </admin>
</config>

Таково содержание adminhtml.xml :

<?xml version="1.0"?>
<config>
    <admin>
        <routers>
            <adminhtml>
                <args>
                    <modules>
                        <netgr_gradd before ="Mage_Adminhtml">Netgr_Gradd_Adminhtml</netgr_gradd>
                    </modules>
                </args>
            </adminhtml>
        </routers>

    </admin>

</config>

Таково содержание Addgroup.php из моего квартала :

class Netgr_Gradd_Block_Adminhtml_Addgroup extends Mage_Adminhtml_Block_Catalog_Product_Attribute_Set_Main
{

    protected function _construct() {
        //This should just be a copy of catalog/product/attribute/set/main.phtml so you can edit it
        $this->setTemplate('netgr/gradd/group.phtml');
    }

    public function _prepareLayout() {
        $this->setChild('my_button',
            $this->getLayout()->createBlock('adminhtml/widget_button')->setData(array(
                'label'     => Mage::helper('catalog')->__('Add Group'),
                'onclick'   => 'editSet.addGroupFront();',
                'class'     => 'add-group'
        )));
        return parent::_prepareLayout();
    }

    public function getYourButtonHtml() {
        return $this->getChildHtml('my_button');
    }
}

Это расширенный класс. и это содержание controllers/Adminhtml/AddgroupController.php :

<?php

class Netgr_Gradd_Adminhtml_AddgroupController extends Mage_Adminhtml_Controller_Action
{

    public function indexAction(){

    }

    public function saveAction(){
        echo 111;
    }
}

Я создал шаблон, в котором я на самом деле выполняю функции ajax:

 save : function() {
                        $('messages').update();
                        TreePanels.rebuildTrees();
                        var _validator = new Validation('set_prop_form', {onSubmit:false});
                        if( !_validator.validate() ) {
                            return;
                        }
                        editSet.req.attribute_set_name = $('attribute_set_name').value;
                        if (!editSet.req.form_key) {
                            editSet.req.form_key = FORM_KEY;
                        } 
                        list_of_group = "";
                        $$(".add_new_frontend_group>a>span").each( function (val,i) {
                            list_of_group = list_of_group +"^"+ val.innerHTML;
                        });
                        alert('<?php echo $this->getMoveUrl() ?>');
                        var req = {data : Ext.util.JSON.encode(editSet.req)};
                        var con = new Ext.lib.Ajax.request('POST', 'http://attin.netlogiq.eu/magento_new/index.php/admo/netgr_gradd_adminhtml_addgroup/save', {
                            success:editSet.success,
                            failure:editSet.failure
                        }, req);
                    },

Этот материал является прототипом JS. С URL-адресом ajax что-то не так, он выдает мне страницу 404. Что не так с моим URL-адресом?

Author: Attila Naghi, 2014-08-04

1 answers

Ну, то, как я работаю с Ajax в Magento/прототипе, выглядит так:

new Ajax.Request(url, {
    method: 'post',
    parameters: object,
    onComplete: function(transport) {
        //do stuff
    }
}

Где URL-адрес должен быть URL-адресом контроллера Magento, установите значение

<?php echo $this->getUrl('controller_name/method_name') ?>

В вашем случае URL-адрес должен быть

$this->getUrl('netgr_gradd/addgroup/save') or $this->getUrl('addgroup/save')

Вы используете URL-адрес в запросе ajax, а не имя класса, поэтому в нем нет подчеркиваний, кроме тех, которые вы сами вставляете в свои имена, и вы устанавливаете свой маршрутизатор в каталог файлов, чтобы ваш каталог не отражался в ваших URL-адресах, поэтому adminhtml не должен быть в списке. url, я думаю (без глубокого анализа вашего xml с моей стороны).

Редактировать: на самом деле это может быть

$this->getUrl('adminhtml/addgroup/save')

Похоже, вы назвали свой маршрутизатор adminhtml.

 1
Author: user3154108, 2014-08-04 12:12:23