Magento / PHP - перенаправление при отправке - PullRequest
1 голос
/ 28 июня 2011

У нас есть модуль котировки, который отправит запрос котировки, а затем перенаправит на определенную страницу.Мы хотели бы вернуться на страницу продукта, но после нескольких попыток он все еще не работает.

Приведенный ниже код показывает процессор для предложения и в конце показывает: $this->_redirect('Quotation/Quote/List/');

Я попробовал несколько идей с точки зрения получения URL-адреса, но пока ничего не работает.

Что мне нужно добавить, чтобы получить URL-адрес продукта при его обработке, а затем перенаправить на эту страницуа не страница Цитата / Цитата / Список?

    /**
     * Create a quote inquiry with cart's products
     *
     */
    public function CreateRequestAction()
    {
        $this->loadLayout();
        $this->renderLayout();              
    }

    /**
     * Create a quote inquiry with cart's products
     *
     */
    public function CreateIndividualRequestAction()
    {
        $this->loadLayout();
        $this->renderLayout();              
    }


    /**
     * Post a new quote request Individual
     *
     */
    public function SendIndividualRequestAction()
    {
        $CustomerId = mage::Helper('customer')->getCustomer()->getId();

        $storeId = mage::getModel('customer/customer')->load($CustomerId)->getStoreId();
        $defaultValidityDuration = Mage::getStoreConfig('quotation/general/default_validity_duration', $storeId);
        $defaultExpirationDate = time() + $defaultValidityDuration * 24 * 3600;

        //Create new quotation
        $NewQuotation = mage::getModel('Quotation/Quotation')
            ->setcustomer_id($CustomerId)
            ->setcaption($this->__('New request'))
            ->setcreated_time(date("Y/m/d"))
            ->setcustomer_msg($this->getRequest()->getPost('description'))
            ->setcustomer_request(1)
            ->setstatus(MDN_Quotation_Model_Quotation::STATUS_CUSTOMER_REQUEST)
            ->setvalid_end_time(date('Y/m/d', $defaultExpirationDate))
            ->save();
        $NewQuotation->setincrement_id($NewQuotation->GenerateIncrementId())->save();

        //Add selected product
        $product = mage::getModel('catalog/product')->load($this->getRequest()->getPost('product_id'));
        if ($product->getId())
        {
            //add product to quotation          
            $quotationItem = mage::getModel('Quotation/Quotationitem')
                ->setquotation_id($NewQuotation->getId())
                ->setorder(1)
                ->setproduct_id($product->getId())
                ->setqty(1)
                ->setprice_ht($product->getPrice())
                ->setcaption($product->getName())
                ->setsku($product->getSku())
                ->setcost($product->getCost())  
                ->setweight($product->getWeight())
                ->save();       

            //compute quotation price & weight
            $NewQuotation->CalculateWeight();
            $NewQuotation->CalculateQuotationPriceHt();
        }

        //Notify admin
        $NewQuotation->NotifyCreationToAdmin();


        //confirm

        $this->_redirect('Quotation/Quote/List/');
    }

1 Ответ

4 голосов
/ 28 июня 2011

Вместо _redirect() используйте _redirectReferer().

Похоже, _redirect() работает так же, как getUrl() (на самом деле, он используется как есть).

$this->_redirect('catalog/product/view', array(
    'id'=>$product->getId(),
    '_use_rewrite'=>true
));

Примечание: из-за того, как продукты могут быть идентифицированы, они будут перенаправлены на страницу без категории вURL.Если вам известен идентификатор категории, из которой товар был выбран / представлен, включите его в массив как category.

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