Nasıl AjaxLink için arka uç bakış () Zend Framework çağrı yapar

2 Cevap php

Benim web uygulaması bazı ajax-işlevsellik yapmaya çalışıyorum, ama tüm puzzle parçaları uygun alınamıyor:

Ben üzerine tıklandığında, kullanıcı tarafından doldurulabilir, yeni bir girdi (metin) alan açılacaktır, bir bağlantı eklemek istiyorum. Arka-uç, ben linki tıklandığında bazı yönetim yapmak istiyorum.

Ben ajaxLink() metodu kullanılarak, Zend Framework esaslara göre yapmak istiyorum. Herkes benim için bir örnek olabilir? Ben resmi belgelerine (ZendX_JQuery) okudum ama tam olarak bana yardımcı olmuyor.

Benim ön uç (view) kodu bu gibi görünüyor;

<?= $this->ajaxLink("Subscribe", $this->url(array('controller' => 'mycontroller', 'action' => 'action1', 'id' => $event['id'])),
        								array("beforeSend" => "hide", 
        									  "update" => "#pb_" . $event['id'],
        									  'noscript' => false, 
                                              'method' => 'POST')); ?>

Benim arka uç kod bu gibi görünüyor.

public function action1Action()
    {
    	if( !$this->loggedIn || ! $this->athlete) {
    		$this->_redirect('index');
    	}
    	if(! $this->_request->isXmlHttpRequest())
    	{
    		//The request was NOT made with JS XmlHttpRequest
    		die;
    	}
    	// Do some administration
    	// (removed to make this easier in this example)

    	$pb = new Zend_Form_Element_Text('PB');
    	$pb->setLabel('PB:')
    			  ->addValidator('StringLength', false, array(0,20))
    			  ->setRequired(false);
    	$renderText = $pb->render();

    	return $renderText;

    }

Ben verilen yöntem bakmak için-bir action1.phtml görünüm komut istiyor hataları alıyorsanız geri tutun. Ne biçim giriş elemanı nesil ile yapmaya çalışın bu şekilde çalışırsa ben de emin değilim.

I this question içinde cevap bazı bulundu, ama ben sevmiyorum (bağlantı fazladan bir parametre gerektirir ve başka bir denetleyici gerekir) bu zarif değil.

2 Cevap

Siz bu özel eylem için ViewRenderer kapatmanız gerekir. ZF varsayılan olarak belirli bir eylem yöntemi geleneksel olarak adlandırılmış görünüm komut (sizin durumunuzda, action1.phtml) atar ViewRenderer adında bir Eylem Yardımcısı sağlar. Sadece küçük bir metin parçasını, yerine tam bir site görünümünü dönmek için çalışıyoruz yana, tam görünüm render gerekli değildir. Neyse ki, bu kolaydır.

 public function action1Action(){
     $this->_helper->viewRenderer->setNoRender();
     // the rest of your code
 }

The full docs are here: http://framework.zend.com/manual/en/zend.controller.actionhelpers.html#zend.controller.actionhelpers.viewrenderer

Yapacak bir şey yok. Yapmanız gereken tüm içerik geliyor yere işaret olduğunu. Senin görünümünde:

   <?= $this->ajaxLink("Example 1","/controller/action1", 
                                    array('update' => '#content', 
                                          'noscript' => false, 
                                          'method' => 'POST')); ?>

Sizin denetleyicisi:

echo 'Some Content';

Bu Oku:

http://www.mikaelkael.fr/IMG/pdf/ZendX_Framework_1.7.x_EN.pdf