Zend Framework 'AjaxContent' &

1 Cevap php

I'm using jquery in Zend Framework, it's my first trial. I've already found out through another question, that I can change the response by changing the context like so:

$ajaxContext = $this->_helper->getHelper('AjaxContext');
$ajaxContext->addActionContext('myaction', 'html');
$ajaxContext->initContext();

Şimdi bu çok yardımcı oldu ama yeni bir sorun göstermiştir:

Benim sayfa farklı responseSegments oluşur ve Bağlam değiştirerek Ajax isteğine responde zaman, benim diğer ResponseSegments ayrıca Ajax gönderiyor ama onlar değil 'düşünmek'. Ön kontrolörü viewscript.ajax.phtml için sorar ... yanlış olduğu, bu viewscript.phtml (mevcut) olması gerekir.

1 Cevap

Bu arada ben bu çözmek için nasıl anladım ve ben başkalarının gelecekte aynı sorunla karşılaşırsanız olacağını düşünüyorum, çünkü benim kendi soru cevap verecektir:

(Eylem kurulum ayrılmış değilse veya bootstrap.php) Benim ActionSetup.php ben isteği hiçbir XmlHttpRequest ise eylemleri yalnızca, eylem yığına emin olmak için gereklidir.

Eksik olan tek şey, bir if ifadesi oldu:

if (!$request->isXmlHttpRequest())

Her şey gibi görünüyor:

/**
 * Front Controller plugin to set up the action stack.
 *
 */
class Project_Controller_Plugin_ActionSetup extends Zend_Controller_Plugin_Abstract
{
    public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request)
    {
        if (!$request->isXmlHttpRequest())
        {
            $front = Zend_Controller_Front::getInstance();
            if (!$front->hasPlugin('Zend_Controller_Plugin_ActionStack'))
            {
                $actionStack = new Zend_Controller_Plugin_ActionStack();
                $front->registerPlugin($actionStack, 97);
            } else
            {
                $actionStack = $front->getPlugin('Zend_Controller_Plugin_ActionStack');
            }

            $menuAction = clone ($request);
            $menuAction->setActionName('menu')
            ->setControllerName('index');
            $actionStack->pushStack($menuAction);

            $userlogAction = clone ($request);
            $userlogAction->setActionName('userlog')
            ->setControllerName('index');
            $actionStack->pushStack($userlogAction);

           //etc.
        }
    }
}