Foros del Web » Programando para Internet » PHP » Symfony »

problemas con formulario de busqueda

Estas en el tema de problemas con formulario de busqueda en el foro de Symfony en Foros del Web. hola amigos estoy diseñando un formulario de busqueda pero no me funciona al presionar el boton buscar, no realiza la busqueda. alguien puede ayudarme a ...
  #1 (permalink)  
Antiguo 30/04/2013, 08:18
 
Fecha de Ingreso: abril-2013
Mensajes: 29
Antigüedad: 11 años, 7 meses
Puntos: 0
problemas con formulario de busqueda

hola amigos estoy diseñando un formulario de busqueda pero no me funciona al presionar el boton buscar, no realiza la busqueda. alguien puede ayudarme a corregir esta situación.

aqui el formulario

namespace Salud\OfertasBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
class SearchType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options)
{

$builder
->add('nomplaza','text',array('label'=> 'Empleo a buscar','required' => false));
}


public function getName() {
return 'search';
}
}
?>

aqui la vista

{% extends 'SaludOfertasBundle::plantilla.html.twig' %}
{% block body %}
<h1>Busqueda Ofertas de Empleos</h1>
<div>

{% if form_errors(form) %}
{{ form_errors(form) |trans}}
{% endif %}
<form action="{{ path('ofertas_busqueda2') }}" method="POST" {{ form_enctype(form) }}>
<table>
<tr>
<td>Plaza</td>
{{ form_widget(form.nomplaza) }}

</tr>
<tr>
<td colspan="2">
<button type="submit">Buscar</button></td>
</tr>
</table>
</form>
<br>
</div>
{% endblock %}

AQUI EL CONTRALADOR (NO ME FUNCIONA)

/**
* Displays a form to create a new Ofertas entity.
*
* @Route("/buscar", name="ofertas_busqueda")
* @Template("SaludOfertasBundle:Ofertas:buscar.html. twig")
*/
public function buscarAction()

{
$form = $this->createForm(new SearchType());
return array('form'=>$form->createView());
$em = $this->getDoctrine()->getManager();
$title= $this->getRequest()->get('parametro');
$entities = $em->getRepository('SaludOfertasBundle:Ofertas')->getOfertas($title);
if (!$entities) {
throw $this->createNotFoundException('Entidad Ofertas no encontrada.');
$this->get('session')->setFlash('notice', 'No se encontraron Registros.');
}


return $this->render('SaludOfertasBundle:Ofertas:buscar2.html.t wig',array('entities'=>$entities));

}

aqui el metodo en la clase repositorio

public function getOfertas($title)
{
$em = $this->getEntityManager();
$dql = "SELECT d.id, d.urldoc,d.nomplaza,d.salario
FROM SaludOfertasBundle:Ofertas d
WHERE d.nomplaza like :parametro";
$query = $em->createQuery($dql);
$query->setParameter('parametro', '%' . $title . '%');
return $query->getResult();
}


PUEDEN INDICARME TODO LO QUE ESTOY HACIENDO MAL PARA PODER CORREGIRLO Y DARME ALGUN EJEMPLO DE COMO HACERLO.
  #2 (permalink)  
Antiguo 02/05/2013, 12:46
Avatar de fhederico  
Fecha de Ingreso: agosto-2009
Mensajes: 247
Antigüedad: 15 años, 4 meses
Puntos: 23
Información Respuesta: problemas con formulario de busqueda

Hola,

Dos cosas, la primera en tu plantilla o vista, llamas a

Código:
<form action="{{ path('ofertas_busqueda2') }}" method="POST" {{ 
form_enctype(form) }}>
Pero en tu Controller

Código:
* @Route("/buscar", name="ofertas_busqueda")
* @Template("SaludOfertasBundle:Ofertas:buscar.html. twig")
*/
public function buscarAction()
{
...
Si deseas que al enviar el formulario vaya a esta misma funcion debes poner el mismo nombre, ahora, si tienes otra funcion, debes colocarla aqui.

Lo otro, sobre tu funcion "buscarAction"

Código:
//Estas creando aqui el formulario
$form = $this->createForm(new SearchType());

//Aqui lo devuelves, si la persona pulso enviar al formulario igualmente con esto haces que cargue
//el formulario en blanco
return array('form'=>$form->createView());

//Aqui no entra nunca
$em = $this->getDoctrine()->getManager();
$title= $this->getRequest()->get('parametro');
$entities = $em->getRepository('SaludOfertasBundle:Ofertas')->getOfertas($title);
if (!$entities) {
throw $this->createNotFoundException('Entidad Ofertas no encontrada.');
$this->get('session')->setFlash('notice', 'No se encontraron Registros.');
}

return $this->render('SaludOfertasBundle:Ofertas:buscar2.html.t wig',array('entities'=>$entities));

}

Te recomiendo que detectes cuando enviaron el formulario y de hay trabajes, por ejemplo

Código:
	$form = $this->createForm(new SearchType());
	$request = $this->getRequest();
	//Si se envio, buscamos, si no, cargamos el formulario vacio solamente
	if($request->getMethod() === 'POST')
	{			
		$em = $this->getDoctrine()->getManager();
		$title= $this->getRequest()->get('parametro');
		
		$entities = $em->getRepository('SaludOfertasBundle:Ofertas')->getOfertas($title);
	
		if (!$entities) {
			throw $this->createNotFoundException('Entidad Ofertas no encontrada.');
			$this->get('session')->setFlash('notice', 'No se encontraron Registros.');
		}
		
		return $this->render('SaludOfertasBundle:Ofertas:buscar2.html.twig',array('entities'=>$entities));
	}
	
	
	return array('form'=>$form->createView());

No se como tienes tu plantilla "buscar2.html.twig", pero bueno, espero te sirva

Por ultimo, ocupa etiquetas para poder ver tu codigo mas facilmente ;)

Saludos

Etiquetas: busqueda, formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:07.