En codeigniter hay dos maneras de recoger las variables dependiendo de como se envien en la url.
Para que esto funcione se debería de añadir un helper en el autoload.php de Codeigniter, que se encuentra en "application/config".
Por ejemplo:
http://localhost/proyecto/index.php/blog/3
Si recibieramos una url de este estilo, en el controlador podríamos recoger ese valor de la siguiente manera:
Ejemplo de archivo controlador
<?php
class Blog extends CI_Controller {
public function index($id)
{
$datos['identificador'] = $id;
$this->load->view('blogview', $datos);
}
?>
class Blog extends CI_Controller {
public function index($id)
{
$datos['identificador'] = $id;
$this->load->view('blogview', $datos);
}
?>
Donde la variable $id que pasamos por parámetro correspondería al "3" de la url, y se lo pasamos a la vista para que la imprima.
Un ejemplo de imprimir ese valor en la vista lo tenéis en el post anterior.
Esta forma se puede utilizar simplemente cuando pasamos un solo valor a la url.
Ahora bien:
¿Como se generan estas url desde la vista del Codeigniter?
<html>
<head>
<title>My Blog</title>
</head>
<body>
<?php echo $id; ?>
<?php echo anchor("blog/index/".$id, "Enlace")
<?php echo anchor("blog/index/".$id, "Enlace")
<html>
<?php echo anchor(uri segments, text, attributes); ?>
El parámetro uri segments, corresponde a "blog/index/3", ya que le estamos indicando de debe de ir al controlador blog, a la función index, con el parámetro $id que corresponde al número 3.
El parámetro atributes es por si queremos añadir atributos, como por ejemplo "title".
array('title' => 'The best news!')
Si quisieramos pararle más parámetros a la url, podríamos utilizar la función anchor de Codeigniter de la siguiente manera:
<?php echo anchor("blog/index/param1/param2", "Enlace", array('title' => 'The best news!')); ?>
La url de Codeigniter está segmentada, eso quiere decir que cada uno de los parámetros después del index.php los podemos recuperar.
Para recuperarlos se haría de la siguiente manera:
$this->uri->segment(1); //devolverá blog
$this->uri->segment(2); //devolverá index
$this->uri->segment(3); //devolverá param1
$this->uri->segment(4); //devolverá param2
El controlador quedaría de la siguiente forma:
<?php
class Blog extends CI_Controller {
public function index()
{
$datos['param1'] = $this->uri.>segment(3);
$datos['param2'] = $this->uri.>segment(4);
$this->load->view('blogview', $datos);
}
?>
class Blog extends CI_Controller {
public function index()
{
$datos['param1'] = $this->uri.>segment(3);
$datos['param2'] = $this->uri.>segment(4);
$this->load->view('blogview', $datos);
}
?>
No hay comentarios:
Publicar un comentario