Zend Framework kullanarak bir işlevi çağırırken

5 Cevap php

Şu anda Zend Framework kullanarak ve jquery ve php ile çalışıyorum. Bir autocheck adınızı durumunu uygulamaya çalışıyor.

Aşağıdaki kodu için benim denetleyicisi klasöründe benim user_availability.php aramak gerekir. Ben yaptım / kontrolörleri / user_availability, .. / user_availability ama bu sayfayı çağırmak değildir. Herkes yardımcı olabilir?

$.post("user_availability.php",{ user_name:$(this).val() } ,function(data)

5 Cevap

Eğer gerçekten Zend Framework ile düz bir php dosyası aramak istiyorsanız, o zaman ortak klasör içine koymak ve user_availability.php / gibi onu aramak gerekir ama neredeyse kesinlikle kullanıcı kullanılabilirlik yapmak için daha iyi olmalıdır birinin bir eylem sizin kontrolörleri

Eylem ve (sizden komut aramak istediğiniz yere bağlı olarak) gör Yapanlar içine bak. Eylem Yapanlar denetleyicileri çağrılabilir ve ... / proje / kütüphanesinde muhafaza edilebilir.

Bir görünümde size ... / projectname / uygulama / view / yardımcıları yazılı ve depoladığınız özel gör Yardımcısı arayabilirsiniz.

Sen iyi çerçevesinde sığacak şekilde kodunuzu yeniden ama sadece. Php script çalışması gerekir (dahil) gerektiren bir yardımcıyı oluşturma isteyebilirsiniz.

View helpers (Survive the Deep End)

Action helpers (from the manual):

Bu olmayan bir kontrolör öğeye bir sayfa isteği yapıyoruz görünür. Herzaman Zend Framework bir istekte, bir denetçi eylemine karşılık sisteminde bir rota isteği URL'sini maç dener. Doğrudan kamu klasör aracılığıyla olacak farklı bir php dosyası hizmet için tek yolu - Tüm bu uygulamanın index.php dosyası aracılığıyla işlenir.

Benim önerim bir Ajax isteği denetler ve seçtiğiniz formatı (XML, json) (yerine bir HTML şablonu render) bir şey döndüren bir denetleyicisi eylem yaratmak için olduğunu.

public function userAvailableAction() 
{
   if ($this->getRequest()->isXmlHttpRequest()) { 
      // check user availability
      $this->_helper->json($data);
   }

}

Herkese teşekkürler. Ben buna çözüm bulundu.

Sen sadece denetleyici sayfasında işlevini koymak ve işlev adı aramak gerekir.

örn:

$.post("check",{ user_name:$(this).val() } ,function(data)

Sonra kontrolör dosya checkUsername kullanılabilirliği size onay işlevini eklemek emin olun.

kodu aşağıdaki gibi benim denetleyicisi sayfası:

class RegisterController extends Zend_Controller_Action {
    public function checkAction(){
        $users = new Users();
        $username = $_POST['username'];
        if($users->checkUnique($_POST['username'])){
            echo "fail";
        }           
}

Bu durumda, CheckUNIQUE adı varsa kontrol etmek için benim modeli denetleyicisi sadece bir sql ifadedir.

Benim jquery kodu için öyle:

$("#username").blur(function(){
    //remove all the class add the messagebox classes and start fading
    $("#msgbox").removeClass().addClass('messagebox').text('Checking...').fadeIn("slow");
    //check the username exists or not from ajax
    $.post("check",{ user_name:$(this).val() } ,function(data){
        if(data=='no'){ //if username not avaiable
            $("#msgbox").fadeTo(200,0.1,function(){ //start fading the messagebox
                //add message and change the class of the box and start fading
                $(this).html('This User name Already exists').addClass('messageboxerror').fadeTo(900,1);
           });
        }else {
         $("#msgbox").fadeTo(200,0.1,function(){  //start fading the messagebox
                //add message and change the class of the box and start fading
                $(this).html('Username available to register').addClass('messageboxok').fadeTo(900,1);
            });
        } 
    });
});

Ben bu linkten bu örnek var:

http://roshanbh.com.np/2008/04/check-username-available-ajax-php-jquery.html. Ona bir göz atın etmeyin. Umarım işe yarar. =)