Bueno buenas mi gran duda en este momento estoy usando cakephp framework y la verdad tengo que hacer unas validaciones usando específicamente jquery con ajax o solo jquery el problema es que estoy teniendo muchos errore y problemas al aplicarlo ya que hay errores que no me dejan avanzar.
este es mi view
Código PHP:
<?php echo $this->Html->script('validation', FALSE); ?>
<div class="actions">
<h3>Acciones</h3>
<ul>
<li><?php echo $this->Html->link( "Agregar Proveedor", array('action'=>'proveedor') ); ?></li>
</ul>
<ul>
<li><?php echo $this->Html->link( "Volver Atras", array('action'=>'index') ); ?></li>
</ul>
<ul>
<li><?php
if($this->Session->check('Auth.User')){
echo $this->Html->link( "Cerrar Sesión", array('action'=>'logout') );
}else{
echo $this->Html->link( "Regresar al login de usuarios", array('action'=>'login') );
}
?></li>
</ul>
</div>
<div id="success"></div>
<div class="form" >
<h3>Registro de Compra de Grano </h3>
<?php echo $this->Form->create('SoyaProductorCompra');?>
<fieldset>
<?php
// echo $this->Form->input('soya_proveedor_id', array( 'options' => $soyaproveedores,'empty' => '--Porfavor Seleccione Proveedor--','label' => 'Por Favor Seleccione a algun Proveedor de la lista' ));
echo $this->Form->input('proveedor_carnet', array('label' => 'Cantidad en tonelada(s) métrica(s) del producto (TM)', 'id'=>'proveedor_carnet'));
echo $this->Form->input('producto', array(
'options' => array(
'GRANO DE SOYA' => 'Grano de Soya',
'GRANO DE GIRASOL' => 'Grano de Girasol'
), 'label'=>'Tipo de Grano'
));
echo $this->Form->input('toneladas', array('label' => 'Cantidad en tonelada(s) métrica(s) del producto (TM)', 'id'=>'toneladas'));
echo $this->Form->input('preciodolar', array(
'label' => 'Precio en Dolares Americanos por tonelada métrica (TM / $us)'));
echo $this->Form->input('total', array('label' => 'Total en Dolares Americanos ($us)', 'default'=>0));
echo $this->Form->input('nrofactura', array('label' => 'Numero Factura','id'=>'total'));
?>
<div id="sending" style="display:none;">
<?php echo $this->html->image('ajax-loader.gif', array('alt' => 'Cargando...')); ?>
</div>
<?php
echo $this->Js->submit('Agregar Existencia', array(
'before'=>$this->Js->get('#sending')->effect('fadeIn'),
'success'=>$this->Js->get('#sending')->effect('fadeOut'),
'update'=>'#success'
));
?>
</fieldset>
<?php echo $this->Form->end(); ?>
</div>
Bueno ahora entrando a lo que es el controlador tengo lo siguiente:
Código PHP:
<?php
App::import('Vendor', 'excel_reader2');
class SoyaproductorcomprasController extends AppController {
public $components = array('Session','RequestHandler');
public $helpers = array('Html', 'Form', 'Js');
public function add()
{
$this->loadModel('SoyaProductorCompra');
$this->loadModel('SoyaProveedor');
$this->loadModel('Productora');
$this->set('productores', $this->Productora->find('first', array('conditions' => array('user_id' => $this->Auth->user('id')))));
$this->set('soyaproveedores', $this->SoyaProveedor->find('list', array(
'fields' => array('id', 'nombre')
)));
if ($this->request->is('post')) {
$this->request->data['SoyaProductorCompra']['user_id'] = $this->Auth->user('id');
$this->request->data['SoyaProductorCompra']['soya_proveedor_id'] = $this->request->data['SoyaProductorCompra']['proveedor_carnet'];
if ($this->SoyaProductorCompra->save($this->data)) {
if($this->RequestHandler->isAjax()) {
$this->render('success', 'ajax');
}else{
$this->Session->setFlash(__('La Información no fue Guardada.'));
return $this->redirect(array('action' => 'index'));
}
}
}
}
public function validate_form(){
$this->loadModel('SoyaProductorCompra');
$this->log("validacion que paso?");
if ($this->RequestHandler->isAjax()) {
debug($this->params['form']['field']);
$this->data['SoyaProductorCompra'][$this->params['form']['field']]=$this->params['form']['value'];
$this->SoyaProductorCompra->set($this->data);
if($this->SoyaProductorCompra->validate()){
$this->autoRender = FALSE;
}else{
$error=$this->validateErrors($this->SoyaProductorCompra);
$this->set('error', $error[$this->params['form']['field']]);
}
}
}
}
seguidamente el jquery
Código Javascript:
Ver original
$(document).ready(function(){ $('#proveedor_carnet').blur(function(){ $.post('http://localhost:8080/cake/soyaproductorcompras/validate_form/', { field: $('#proveedor_carnet').attr('id'), value: $('#proveedor_carnet').val() }, handleNmeValidation ); }); function handleNmeValidation(error){ if(error.length > 0){ if($('#proveedor_carnet-notempty').length === 0){ $('#proveedor_carnet').after('<div id="proveedor_carnet-notEmpty" class="error-message">' + error + '</div>'); } }else{ $('#proveedor_carnet-notEmpty').remove(); } } });
los mensajes de error y success.
validate form
Código PHP:
<?php
echo $error;
success.ctp
Código PHP:
<p style="background-color: lightgreen"> Guardado con Exito</p>
el error
Código:
POST http://localhost:8080/cake/soyaproductorcompras/validate_form/ 403 (Forbidden) jquery.js:9666 jQuery.ajaxTransport.send jquery.js:9666 jQuery.extend.ajax jquery.js:9211 jQuery.each.jQuery.(anonymous function) jquery.js:9357 (anonymous function) validation.js:3 jQuery.event.dispatch jquery.js:4624 jQuery.event.add.elemData.handle