modal en phalcon

preguntado por luis (120 puntos) Ene 6

Hola estoy tratando de hacer una validación de un formulario en un modal con phalcon el problema es que no tengo idea de por donde empezar ya tengo el código del CRUD utilizando el modal pero ahora lo que quiero es validar esa informacion antes de insertarla en la BD
tengo esto en la vista





<!--botón que abre el modal para agregar un nuevo puesto-->
Validar Campos







//objeto javascript al que le añadimos toda la funcionalidad del crud
var crudPhalcon = {};
$(document).ready(function()
{
//Modal para validar ejemplo
crudPhalcon.valida = function()
{
var html = "";
$("#modalCrudPhalcon .modal-title").html("Agregando nuevo puesto");
html += '<?php echo $this->tag->form(array("index/save", "method" => "post", "class" => "form-login", "id" => "form", "role" => "form")); ?>';
html += '';
html += '<?php echo $this->tag->textField("nombre"); ?>';
html += '
';
html += '';
html += '<?php echo $this->tag->textField("paterno"); ?>';
html += '
';
html += '';
html += '<?php echo $this->tag->textField("materno"); ?>';
html += '<?php echo $this->tag->endForm() ?>';
$("#onclickBtn").attr("onclick","crudPhalcon.validaForm()").text("Validar").show();
$("#modalCrudPhalcon .modal-body").html(html);
$("#modalCrudPhalcon").modal("show");
},
    //hacemos la petición ajax para validar un formulario
    crudPhalcon.validaForm = function()
    {
      $.ajax({
        url: "<?php echo $this->url->get('index/save') ?>",
        data: $("#form").serialize(),
        method: "POST",
        success: function(data)
        {
          $("#modalCrudPhalcon .modal-body").html("").html(
            "<p class='alert alert-success'>Puesto guardado correctamente.</p>"
          );
          $("#onclickBtn").hide();
        },
        error: function(error)
        {
          console.log(error);
        }
      });
    },
    //devuelve un json parseado para utilizar con javascript
    crudPhalcon.parse = function(post)
    {
      return JSON.parse(post);
    },
    //devuelve el campo oculto para evitar csrf en phalcon
    crudPhalcon.csrfProtection = function()
    {
      return '<input type="hidden" name="<?php echo $this->security->getTokenKey() ?>"'+
      'value="<?php echo $this->security->getToken() ?>"/>';
    }
  });
  </script>

  <!--ventana modal de bootstrap que utilizaremos para cada caso, crear, editar y eliminar-->
  <div class="modal fade" id="modalCrudPhalcon" tabindex="-1" role="dialog" aria-labelledby="modalCrudPhalconLabel" aria-hidden="true">
    <div class="modal-dialog">
      <div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
          <h4 class="modal-title"></h4>
        </div>
        <div class="modal-body">

        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-danger btn-sm" data-dismiss="modal">Salir</button>
          <button type="button" id="onclickBtn" class="btn btn-success btn-sm">Enviar</button>
        </div>
      </div>
    </div>
  </div>

y algo asi en el controlador

public function saveAction()
{
//si es una petición post
if ($this->request->isPost() == true)
{

        //creamos instancia del modelo users
        $user = new Users();

        //obtenemos los campos del formulario pasando los filtros que queremos
        $user->name = $this->request->getPost('name', array('striptags', 'alphanum', 'trim'));
        $user->email = $this->request->getPost('email', array('striptags', 'email', 'trim'));
        $user->username = $this->request->getPost('username', array('striptags', 'alphanum', 'trim'));
        $user->password = $this->request->getPost('password', array('striptags', 'alphanum', 'trim'));

        //si el usuario no se guarda mostramos los errores
        if (!$user->save()) 
        {
            foreach ($user->getMessages() as $message) 
            {
                $this->flash->error($message);
            }
            //con forward mandamos a la acción index con los errores del formulario
            return $this->dispatcher->forward(array("action" => "index"));
        } 
        //en otro caso mostramos un mensaje conforme se ha registrado y limpiamos los campos del formulario
        else 
        {
            $this->tag->setDefault('name', '');
            $this->tag->setDefault('email', '');
            $this->tag->setDefault('username', '');
            $this->tag->setDefault('password', '');
            $this->flash->success("Te has registrado correctamente.");
            return $this->dispatcher->forward(array("action" => "index"));
        }
    }
    //si no es una petición post
    else
    {
        $this->dispatcher->forward(array(
            "action" => "index"
        ));
    }
}
...