Вызов функции с использованием Zend Framework - PullRequest
0 голосов
/ 31 января 2010

В настоящее время я использую Zend Framework и работаю с JQuery и PHP. Попытка реализовать автоматическую проверку доступности имени пользователя.

Для следующего кода мне нужно вызвать мой user_availability.php, который находится в папке моего контроллера. Я сделал / controllers / user_availability, ../user_availability, но он не вызывает эту страницу. Кто-нибудь может помочь?

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

Ответы [ 5 ]

0 голосов
/ 14 февраля 2010

моя страница контроллера выглядит следующим образом:

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

В этом случае checkUnique - это просто оператор sql в моем контроллере модели, чтобы проверить, существует ли имя пользователя.

Для моего кода JQuery это:

$("#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);
            });
        } 
    });
});

Я получил этот пример по этой ссылке:

http://roshanbh.com.np/2008/04/check-username-available-ajax-php-jquery.html. Взгляните на это. Я надеюсь, что это помогает. =)

0 голосов
/ 02 февраля 2010

Спасибо всем. Я нашел решение для этого.

Вам просто нужно поместить функцию на странице контроллера и вызвать имя функции.

например:

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

Затем в вашем контроллере файл проверки доступности имени пользователя обязательно добавьте функцию проверки.

0 голосов
/ 31 января 2010

Просмотрите Action и View Helpers (в зависимости от того, откуда вы хотите вызвать скрипт). Помощники действий могут вызываться из контроллеров и храниться в ... / project / library.

Из представления вы можете вызвать пользовательский View Helper, который вы написали и сохранили в ... / projectname / application / view / helpers.

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

Просмотр помощников (Survive the Deep End)

Помощники действий (из руководства):

0 голосов
/ 31 января 2010

Похоже, вы делаете запрос страницы к неконтролируемому элементу. Каждый раз, когда вы делаете запрос в Zend Framework, он пытается сопоставить URL-адрес запроса с маршрутом в системе, который соответствует действию контроллера. Все это обрабатывается через файл index.php вашего приложения - единственный способ напрямую обслуживать другой php-файл - через вашу общую папку.

Я предлагаю создать действие контроллера, которое проверяет Ajax-запрос и возвращает что-то в выбранном вами формате (XML, json) (вместо рендеринга шаблона HTML).

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

}

0 голосов
/ 31 января 2010

Если вы действительно хотите вызвать простой php-файл с Zend Framework, то вам нужно поместить его в общую папку и назвать его /user_availability.php, но почти наверняка лучше сделать доступность пользователя действием один из ваших контроллеров

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