Magento - Onclick View.php Методы? - PullRequest
       15

Magento - Onclick View.php Методы?

0 голосов
/ 29 февраля 2012

Я достаточно хорошо ознакомился со структурой дизайна Magento и теперь протягиваю руку для ее разработки.

В любом случае, я пытаюсь добавить несколько кнопок в меню Sales / Order, которыедает возможность нажать кнопку, которая затем отправляет предопределенный шаблон (например, возвращает / отправляет продукт).

У меня есть метод электронной почты, отсортированный из-за довольно громоздкого Google'а, но я пытаюсь вызвать этот метод внутриview.php обещает быть хлопотным.Я могу заставить метод работать, но он будет работать без нажатия кнопки, и это очень заметно с «Works !!»застрял на вершине и возиться со стилем Magento.

Я искал метод onclick сделать это:

$model = Mage::getModel('MyTux_Email_Model_Email');
if($this->_isAllowedAction('Despatch'))
{
    $this->_addButton('Despatched', array(
    $message = Mage::helper('sales')->__('Are you sure this item has been despatched?'),
    'label'     => Mage::helper('sales')->__('Despatch Confirm'),
    'onclick' => $model->_sendStatusMail($order),
    ));
 }

Я пытался каждый способ изменить это, яМы использовали множество логических выражений, смешанных с операторами if, т.е. если кнопка нажата, тогда делайте это, иначе делайте все ошибки, но, похоже, ничто не может правильно инкапсулировать метод.

Пользовательский модуль настроен правильно, настоящее препятствиеТеперь нужно выяснить, вызывает метод.Как вы можете видеть, я сделал это глобальным помощником, чтобы я мог легко получить доступ к методу.Но на самом деле оказывается хлопотно, есть ли у кого-нибудь какие-либо идеи, как я могу выполнить:

onclick - вызовите метод!Просто не звоните, когда страница загружается!: |

Спасибо !!

Ответы [ 2 ]

1 голос
/ 29 февраля 2012

Параметр onclick устанавливает атрибут onclick тега кнопки HTML. Он не исполняется Magento.

Способ, которым я видел это, состоит в том, чтобы создать контроллер и маршрут для обработки запроса и установить onclick, чтобы перенаправить браузер на URL-адрес контроллера или сделать AJAX-вызов контроллера.

0 голосов
/ 08 марта 2012

Мне удалось заставить его работать (действительно глючит в данный момент) с толчком в правильном направлении на StackOverflow.Я собираюсь подробно рассказать, что я должен был сделать для того, чтобы это работало для использования другими:

  1. Создайте контроллер индекса в своем пользовательском модуле.В Magento Wiki есть учебник по этому вопросу.
  2. Настройте ваш config.xml следующим образом (это интерфейс, этот модуль предназначен для использования в качестве бэкэнда, так что просто для примера) со следующим:

    ...
    <frontend>
    <routers>
        <namespace_module>
            <use>standard</use>
            <args>
                <module>namespace_module</module>
                <frontName>modulename</frontName>
            </args>
        </namespace_module>
    </routers>  
    </frontend>
    ...
    

Имя фронта будет означать: http://yoursite.com/modulename, изменить по своему усмотрению.

3: Использовать следующее в качестве базового примерадля вашего метода:

    'onclick'   => "confirmSetLocation(\'{$message}','{$this->getUrl('namespace_module')}\')",

4: Чтобы получить свой OrderId и Order, используйте следующее:

    class MyTux_Email_IndexController extends Mage_Core_Controller_Front_Action
    {        
        public function indexAction() 
        {
          $orderId = $this->getRequest()->getParam(\'order_id\');
           $order = Mage::getModel(\'sales/order\')->load($orderId);
            $model = Mage::getModel(\'Your_Custom_Model_Name\');
             $email = $model->_sendStatusMail($order);
        }
    }

5: Затем следуют любые ваши соответствующие вызовы модели.Обязательно назовите заказ на уровне контроллера, однако.Кошмар, чтобы понять это, но, надеюсь, этот пост поможет кому-то, кто имеет подобную дилемму!

...