Dado el siguiente cotrolador:
<?php
class PersonaController extends AppController {
public function index() {
if (!Input::hasPost('termino')) {
Flash::info('Favor ingresar al menos cuatro letras del nombre de
la persona');
return;
}
}
public function busqueda() {
$termino = strtoupper(Input::post('termino'));
$idpais = Auth::get('pais_id');
Load::models('pers/persona');
$persona = new Persona();
$resultado = $persona->getNombres($termino, $idpais);
die(json_encode($resultado));
}
public function modpersona($id) {
exit("id: $id");
}
protected function after_filter() {
if (Input::isAjax()) {
View::template(null);
}
}
}
?>
Con el respectivo modelo:
<?php
class Persona extends ActiveRecord {
protected $schema = 'pers';
public function getnombres($busqueda, $pais_id) {
$res = $this->find_all_by_sql("SELECT
p.id, p.numero, CASE WHEN
espersonajuridica THEN TRIM(COALESCE(razonsocial, '')) ELSE
TRIM(COALESCE(primerapellido,'') || ' ' || COALESCE(segundoapellido,
'') || ' ' || COALESCE(primernombre, '') || ' ' ||
COALESCE(segundonombre, '')) END AS nombre, c.nombre AS identificacion
FROM pers.persona p, pers.claseidentificacion c
WHERE (p.razonsocial LIKE '%$busqueda%' OR
p.primerapellido LIKE '%$busqueda%' OR
p.primernombre LIKE '%$busqueda%') AND
p.claseidentificacion_id =
c.id AND c.pais_id = $pais_id");
if ($res) {
foreach ($res as $persona) {
$personas[] = (object) array("label" => $persona->nombre . '
' . $persona->numero, "value" => $persona->id);
}
return $personas;
} else return (object) array("label" => "No hubo coíncidencias",
"value" => 0);
}
}
?>
Y la vista index asi:
<div class="marco">
<?php echo View::content();?>
<br/>
<?php echo Form::label('Persona: * ', 'persona'); ?>
<?php echo Form::text('persona', 'size = "100" maxLength = "100"'); ?
>
</div>
<script>
$(function() {
$('#persona').autocomplete({
minLength : 4,
source : function(request, response) {
var url = "<?php echo PUBLIC_PATH ?>pers/persona/busqueda";
$.post(url, {'termino' : request.term}, response, 'json');
},
onItemSelect: function(request, response) {
var nurl = "<?php echo PUBLIC_PATH ?>pers/persona/modpersona"
+ response.value;
alert(nurl);
}
});
});
</script>
funciona bien el autocomplete, sin embargo cuando selecciono el item
me muestra en el input el id correspondiente al value de la línea
escogida. Es decir no se dispara la función de onItemSelect:. Ahora lo
que realmente quiero es invocar con:
$("section").load(nurl);
el controlador persona con la accion modpersona y su respectivo id
como parametro.
¿Alguna sugerencia?
Gracias de antemano.