Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Duda con variables en URL [CakePHP]

Estas en el tema de Duda con variables en URL [CakePHP] en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola, Tengo un script que muestra noticias en: Cita: /cake/mostrar Y me gustaría saber como tengo que proceder para que al darle a "Leer más" ...
  #1 (permalink)  
Antiguo 28/12/2008, 08:11
 
Fecha de Ingreso: agosto-2004
Ubicación: In front of PC
Mensajes: 21
Antigüedad: 19 años, 8 meses
Puntos: 0
Duda con variables en URL [CakePHP]

Hola,

Tengo un script que muestra noticias en:
Cita:
/cake/mostrar
Y me gustaría saber como tengo que proceder para que al darle a "Leer más" se abra otra página con la noticia entera.

O sea, en la URL quedaría:

Cita:
/cake/mostrar/1

Salu2
  #2 (permalink)  
Antiguo 28/12/2008, 08:38
 
Fecha de Ingreso: octubre-2005
Mensajes: 42
Antigüedad: 18 años, 6 meses
Puntos: 1
Respuesta: Duda con variables en URL [CakePHP]

Creo que pretendes que muestre el listado de noticias y el detalle de la noticia con la misma acción. Te cuento como lo hago yo a ver si te sirve de orientación.

En mi controlador "noticias" tengo los métodos:
Código PHP:
public function index(){ // el listado de noticias

public function view($id){ // la noticia al completo 
Para cada uno de esos métodos creas su correspondiente código y sus vistas asociadas y ya está. Por supuesto en la vista del listado tienes que poner los enlaces de "Leer más" correctamente.

De este modo tendrías la url "/cake/noticias" para el listado completo y la url "/cake/noticias/view/1" para la vista completa de la noticia con ID = 1.

Se puede jugar con las urls también en el archivo "app/config/routes.php" pero te recomiendo que primero entiendas bien lo básico.
  #3 (permalink)  
Antiguo 30/12/2008, 07:50
 
Fecha de Ingreso: agosto-2004
Ubicación: In front of PC
Mensajes: 21
Antigüedad: 19 años, 8 meses
Puntos: 0
Respuesta: Duda con variables en URL [CakePHP]

Hola de nuevo,

Me guié más o menos con lo que me dijiste y ahora tengo dos métodos, el index() y el mostrar(), pero al mostrar el detalle de la noticia, no muestra nada. Este es el método que utilizo:

Código:
function mostrar($id)
	{
		if(!is_numeric($id))
		{
			$this->set('error', true);
		}
		else
		{
			$this->set('id', $id);
                        $noticia = $this->Noticia->findByid_noticia($id);
			$this->set('admin', $noticia['Noticia']['admin']);
			$this->set('content', $noticia['Noticia']['contenido']);
			$this->set('fecha', $noticia['Noticia']['fecha']);
			$this->set('titulo', $noticia['Noticia']['titulo']);
		}
		
	}
Y he aquí la vista (más o menos lo esencial):

Código HTML:
<head>
<?php echo $html->css('estilo_noticias.css', 'stylesheet'); ?>
</head>

        

<h2>Listado de Noticias</h2>



<?php echo $html->div('caja'); ?>
<?php echo $html->div('marco_superior');?>
<?php echo $html->div('titulo', '<h2 class="titulo_letras">'.$titulo.'</h2><h5 class="datos_titulo">Enviado por: '.$admin.'	||		'.$fecha.'</h5>');?>
<?php echo $html->div('contenido', $content); ?>
No sé si recojo mal las variables o que .

Gracias.

Última edición por elank0; 30/12/2008 a las 07:55
  #4 (permalink)  
Antiguo 30/12/2008, 13:49
 
Fecha de Ingreso: octubre-2005
Mensajes: 42
Antigüedad: 18 años, 6 meses
Puntos: 1
Respuesta: Duda con variables en URL [CakePHP]

Creo que tu problema puede ser porque $id nunca sea númerica aunque tú creas que lo sea. Las variables pasadas por $_GET son por defecto cadenas (que alguien me corrija si me equivoco).

Te pongo una versión simple del código de "mostrar" que yo utilizo.
Código PHP:
public function mostrar($id){
    
$this->Noticia->id $id;
    
$this->set('noticia'$this->Noticia->read());

Puedes ver que es mucho más sencillo que lo que tu utilizas. ¿Por qué? Bueno, yo no hago la comprobación de que el ID sea númerico, no me hace falta. Si el ID no es un número no encontrará correspondencia en la tabla de registros.
El método "findById_noticia" supongo que lo has desarrollado tú. No es necesario. Te vale con asignar el valor al atributo "id" de "Noticia" y luego invocar el método "read". Esto devuelve un array que paso directamente a la vista. ¿Por qué molestarme en hacer un "set" de cada uno de los valores del array cuando puedo pasarlos todos en bloque? A mi me parece más sencillo.

Obviamente el método se puede mejorar añadiendo cuantas comprobaciones de los valores recibidos quieras (con Sanitize por ejemplo). Te he puesto una versión simple para guiarte.

Te recomiendo que cuando quieras hacer cosas mires el API: http://api.cakephp.org/1.2/classes.html. Muchas veces hacemos cosas que ya estaban hechas y perdemos el tiempo con ello. Te vendrá muy bien mirar los métodos de las clases "Model" y "Controller".

Un saludo.
  #5 (permalink)  
Antiguo 30/12/2008, 14:54
 
Fecha de Ingreso: agosto-2004
Ubicación: In front of PC
Mensajes: 21
Antigüedad: 19 años, 8 meses
Puntos: 0
De acuerdo Respuesta: Duda con variables en URL [CakePHP]

Gracias!

Siempre había mirado la API pero los helpers, no las clases Model y Controller, son realmente esenciales.

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 05:35.