Input::hasPost();

328 views
Skip to first unread message

~Albert

unread,
May 9, 2012, 10:17:59 AM5/9/12
to kum...@googlegroups.com
Hola,

Quisera saber si existe alguna función para saber si hay datos sin especificar cual, por ejemplo

Input::hasPost(); // que me diga si algún dato en Post, hasta donde se esa función requiere un parámetro para preguntar sobre una clave específica, quisiera que también me dijera si hay algún dato cualquiera que fuese, ¿es posible?

Gracias.

Oscar Cid

unread,
May 9, 2012, 10:22:49 AM5/9/12
to kum...@googlegroups.com
si preguntas por el nombre del formulario asi

if (Input::hasPost('cliente'))

te respondera verdadero si el formulario viene con datos.

--
Viva KumbiaPHP Framework!
http://www.kumbiaphp.com/
Ha recibido este mensaje porque está suscrito a Grupo "KumbiaPHP Framework" de Grupos de Google.
Para obtener más opciones, visita este grupo en http://groups.google.com/group/kumbia?hl=es.

~Albert

unread,
May 9, 2012, 10:26:17 AM5/9/12
to kum...@googlegroups.com
Muchas gracias!..

~Albert

unread,
May 9, 2012, 11:46:36 AM5/9/12
to kum...@googlegroups.com
No me funciona :(

Tengo lo siguiente en la vista:

<?php echo Ajax::form('formulario', 'autenticacion', 'formulario', 'post', 'name="autenticacion"') ?> 

y luego en el controller tengo: 

if(Input::hasPost('autenticacion')){
   ....
}

lo probé con ID en el atributo del form y no sirve tampoco, siempre da falso!...

Manuel Aguirre

unread,
May 9, 2012, 11:57:52 AM5/9/12
to kum...@googlegroups.com
el name=""  va en los elementos del form, no en el form como tal.

Ejemplo:

echo Form::open();

echo Form::text("arreglo.nombre");

echo Form::hidden("arreglo.id");


echo Form::submit("Enviar");

echo Form::close();

eso crea un <input type="text" name="arreglo[nombre]" /> y un <input type="hidden" name="arreglo[id]" />

para saber si se envió el form basta con hacer en la accion esto:

if ( Input::hasPost("arreglo") ){

      //si entra aqui, es porque se envió el form
}

Oscar Cid

unread,
May 9, 2012, 11:57:38 AM5/9/12
to kum...@googlegroups.com
mmmm, creo que cometi un pequeño error.
veras, los input de tu formulario son como un array, asi, independiente del nombre del formulario, debes preguntar por el arreglo de los input
ejemplo. vista:

<?php echo Ajax::form('res-datos-personales', NULL, 'form-horizontal') ?>
        <?php echo Form::hidden('usuario.id') ?>
            <div class="control-group">
                 <label for="usuario_nombres">Nombres* : </label>
                 <div class="controls">
                      <?php echo Form::text('usuario.nombres') ?>
                 </div>
            </div>
            <div class="control-group">
                 <label for="usuario_apellido_paterno">Apellido Paterno : </label>
                 <div class="controls">
                      <?php echo Form::text('usuario.apellido_paterno') ?>
                 </div>
            </div>
            <div class="control-group">
               <label for="usuario_apellido_materno">Apellido Materno : </label>
               <div class="controls">
                    <?php echo Form::text('usuario.apellido_materno') ?>
               </div>
            </div>
            <div class="control-group">
               <label for="usuario_apodo">Nick : </label>
               <div class="controls">
                    <?php echo Form::text('usuario.apodo') ?>
               </div>
            </div>
            <div class="control-group">
               <label for="usuario_telefono">Telefono : </label>
               <div class="controls">
                    <?php echo Form::text('usuario.telefono') ?>
               </div>
            </div>
            <div class="control-group">
               <label for="usuario_celular">Celular : </label>
               <div class="controls">
                    <?php echo Form::text('usuario.celular') ?>
               </div>
            </div>
            <div class="control-group">
               <label for="usuario_email">Correo Electronico* : </label>
               <div class="controls">
                    <?php echo Form::text('usuario.email') ?>
               </div>
            </div>          
            <div class="control-group">
               <label for="usuario_activo">Activo : </label>
               <div class="controls">
                    <?php echo Form::select('usuario.activo', array('1' => 'Si', '0' => 'No')) ?>
               </div>
            </div>
            <div class="form-actions">
               <?php echo Form::submit('Guardar Cambios', 'name="datos_personas" class="btn btn-primary"') ?>
            </div>
        <?php echo Form::close() ?>

y en el controlador::

public function editar($id) {
        try {
            $usr = new Usuarios();
            $this->usuario = $usr->find_first($id);
            if (Input::hasPost('usuario')) {
                if ($usr->update(Input::post('usuario'))) {
                    Flash::valid('El Usuario Ha Sido Actualizado Exitosamente...!!!');
                    return Router::redirect();
                } else {
                    Flash::warning('No se Pudieron Guardar los Datos...!!!');
                    unset($this->usuario);
                }
            } else if (!$this->usuario) {
                Flash::warning("No existe ningun usuario con id '{$id}'");
                return Router::redirect();
            }
        } catch (KumbiaException $e) {
            View::excepcion($e);
        }
    }


se entiende?

--

~Albert

unread,
May 9, 2012, 12:17:29 PM5/9/12
to kum...@googlegroups.com
Si, lo que mencionan lo conozco bien y lo he utilizado, pero en este caso particular no necesito asociar los datos a ningún modelo por lo que:

if ($usr->update(Input::post('usuario'))) { }

ni

$usuario = new Usuario (Input::post('usuario'));

me sirven porque deseo evaluar las variables del formulario por separado.... y lo que necesito saber es si puedo verificar si alguna de ellas viene en el POST, sin tener que preguntar por cada una.

Oscar Cid

unread,
May 9, 2012, 12:18:56 PM5/9/12
to kum...@googlegroups.com
amigo, era solo un ejemplo, tome solo lo que sirve.

--

Manuel Aguirre

unread,
May 9, 2012, 12:19:56 PM5/9/12
to kum...@googlegroups.com
prueba con if ( count($_POST) ){}   ó if ( sizeof($_POST) ){}  a ver....

Manuel Aguirre

unread,
May 9, 2012, 12:33:04 PM5/9/12
to kum...@googlegroups.com
mas sencillo aun:

if ($_POST){
            Flash::info("se ha enviado el form");
}

~Albert

unread,
May 9, 2012, 12:45:31 PM5/9/12
to kum...@googlegroups.com
Gracias Manuel, funciona perfecto!

~Albert

unread,
May 9, 2012, 12:45:53 PM5/9/12
to kum...@googlegroups.com
Oscar, creo que la pregunta fue puntual, antes de afanarse a responder hay que leer bien si se conoce del tema o no, de todos modos gracias.

~Albert

unread,
May 9, 2012, 1:38:55 PM5/9/12
to kum...@googlegroups.com
Propongo que la función hasPost quede así:

public static function hasPost($var=null) 
{
if(func_num_args())
return filter_has_var(INPUT_POST, $var);
else
return $_POST;
}

por si a alguien le interesa, de esta forma se puede verificar si hay elementos en post o no así:

if( Input::hasPost() ){
// se han enviado datos cualesquiera que sean
Reply all
Reply to author
Forward
0 new messages