Ok. I create a simple testpage. Below I wrote all listing from index
controller and view files:

IndexController.php:

<?php
class IndexController extends Zend_Controller_Action {
   function init() {
      $this->view->baseUrl = $this->_request->getBaseUrl();
          Zend_Loader::loadClass('Users');

   }
   function indexAction(){
      $this->view->title = "ZF - Validation";
   }
   function checkloginAction(){
     $request = trim(strtolower($_REQUEST['login']));

         $valid = 'true';

         $users = new Users();
         $select = $users->select();
         $select->where('login = ?', $request);
         $usernames = $users->fetchAll($select);

         foreach($usernames as $username) :
           if($username->login != ''){
         $valid = 'false';
           }
         endforeach;

         $this->view->valid = $valid;
   }
}


index.phtml :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>
<html xmlns="http://www.w3.org/1999/xhtml";>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <link rel="stylesheet" type="text/css" media="screen" href="<?php
echo $this->baseUrl;?>/public/styles/site.css" />
 <script type="text/javascript" src="<?php echo $this->baseUrl;?>/
public/scripts/jquery.js"></script>
 <script type="text/javascript" src="<?php echo $this->baseUrl;?>/
public/scripts/jquery.validate.js"></script>

 <title><?php echo $this->escape($this->title); ?></title>
</head>
<script type="text/javascript">
   $(document).ready(function() {
        // validate signup form on keyup and submit
        var validator = $("#signupform").validate({
                rules: {
                        login: {
                                required: true,
                                minlength: 2,
                                remote: "checklogin"  //<-- dosen't
work
                        }
                },
                messages: {
                        login: {
                                required: "Enter login",
                                minlength: jQuery.format("Enter at
least {0} characters"),
                                remote: jQuery.format("{0} is already
in use")
                        }
               },
                // set this class to error-labels to indicate valid
fields
               success: function(label) {
                        // set &nbsp; as text for IE
                        label.html("&nbsp;").addClass("checked");
                }
        });
});

</script>
<body xml:lang="pl">

<div id="container">
 <br />
 <form action="sample.php" id="signupform" autocomplete="off"
method="post">
   <label for="login">Login:</label><br />
   <input id="login" type="text" name="login" />
   <br />
   <br />
   <input type="submit" name="signup" value="Register" />
 </form>

</div>

</body>
</html>


checklogin.phtml :

<?php echo $this->valid; ?>


Why the remote validation still dosen't work? I don't know what insert
into remote function.

Please help.

David

On Oct 16, 5:58 pm, "Jörn Zaefferer" <[EMAIL PROTECTED]>
wrote:
> Can you post a testpage?
>
> Jörn
>
> 2008/10/16 Namrasit <[EMAIL PROTECTED]>:
>
>
>
> > Hi!
>
> > I try to use Zend Framework with JQuery validation plugin. Standard
> > validation of forms works good but when I want to remote validate (f.e
> > check a login in database) remote function dosen't work. Below I write
> > a code with method from controller and views listing:
>
> > Method from controller:
>
> > function checkloginAction(){
> >     $request = trim(strtolower($_REQUEST['login']));  //take data
> > from global REQUEST array
>
> >     $users = new Users();           //make a new class with users
> >     $select = $users->select();               //select users where
> > the login
> >     $select->where('login = ?', $request); //is the same like from
> > REQUEST array
> >     $login = $users->fetchAll($select);
> >     if ( $login->login == '' ) {  //if login is empty
> >        $valid = 'true';             //make valid true
> >     }else{                            //else
> >        $valid = 'false';            //make valid false
> >     }
> >     $this->view->valid = $valid;  //pass the valid to view
> > }
>
> > Checklogin view (checklogin.phtml):
>
> > <?php
> >   echo $this->valid;  //show result of valid
> > ?>
>
> > Registration form view:
>
> > ...
> >  <script type="text/javascript" src="<?php echo $this->baseUrl;?>/
> > public/scripts/jquery.js"></script>
> >  <script type="text/javascript" src="<?php echo $this->baseUrl;?>/
> > public/scripts/jquery.validate.js"></script>
> > ...
> > <script type="text/javascript">
> >   $(document).ready(function() {
> >        // validate signup form on keyup and submit
> >        var validator = $("#signupform").validate({
> >                rules: {
> >                        login: {
> >                                required: true,
> >                                minlength: 2,
> >                                remote: "checklogin"  <-- dosen't work
> >                        },
> >                        pass: {
> >                                required: true,
> >                                minlength: 5
> >                        },
> >                        pass_confirm: {
> >                                required: true,
> >                                minlength: 5,
> >                                equalTo: "#pass"
> >                        }
>
> >                },
> >                messages: {
> >                        login: {
> >                                required: "Enter login",
> >                                minlength: jQuery.format("Enter at least {0} 
> > characters"),
> >                                remote: jQuery.format("{0} is already in 
> > use")
> >                        },
> >                        pass: {
> >                                required: "Enter password",
> >                                minlength: jQuery.format("Enter at least {0} 
> > characters")
> >                        },
> >                        pass_confirm: {
> >                                required: "Repeat password",
> >                                minlength: jQuery.format("Enter at least {0} 
> > characters"),
> >                                equalTo: "Powtórzone hasło jest 
> > nieprawidłowe"
> >                        }
> >               },
> >                // set this class to error-labels to indicate valid fields
> >               success: function(label) {
> >                        // set &nbsp; as text for IE
> >                        label.html("&nbsp;").addClass("checked");
> >                }
> >        });
> > });
> > </script>
> > ...
> > <form action="" id="signupform" autocomplete="off" method="post">
> >      <label for="login">Login*:</label><br />
> >      <input id="login" type="text" name="login" /><span
> > class="status"></span><br />
>
> >      <label for="pass">Password*:</label><br />
> >      <input id="pass" type="password" name="pass" /><span
> > class="status"></span><br />
>
> >      <label for="pass">Confirm password*:</label><br />
> >      <input id="pass_confirm" type="password" name="pass_confirm" /
> >><span class="status"></span><br /><br />
> >      <input type="submit" name="signup" value="Register" />
> > </form>
> > ...
>
> > The main problem is in '..remote: "checklogin"...'. This function
> > dosen't work even I put in checklogin method only $this->views->valid
> > = 'false' . The registration form view and checklogin view works with
> > the same controller.
>
> > I don't now why its dosen't work. Please help!
>
> > David

Reply via email to