Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP OO Lógica bloqueda

Estas en el tema de Lógica bloqueda en el foro de PHP en Foros del Web. Que tal, tengo un problema, estoy empezando con PHP OO y MVC, les describo mi duda, tengo un formulario que envia por metodo post unos ...
  #1 (permalink)  
Antiguo 13/04/2016, 15:21
 
Fecha de Ingreso: marzo-2016
Ubicación: México
Mensajes: 58
Antigüedad: 8 años
Puntos: 3
Pregunta Lógica bloqueda

Que tal, tengo un problema, estoy empezando con PHP OO y MVC, les describo mi duda,
tengo un formulario que envia por metodo post unos datos al controlador, este ejecuta unas funciones del modelo, el cual retorna un arreglo al controlador, mi duda es: Como le hago para mostrar los elementos de ese arreglo a la vista
  #2 (permalink)  
Antiguo 13/04/2016, 15:35
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Lógica bloqueda

Cita:
Como le hago para mostrar los elementos de ese arreglo a la vista
Eso depende de exactamente cómo hayas implementado dichas vistas, adivinar no se puede.

Pero a grandes rasgos con hacer include bastaría:

Código PHP:
Ver original
  1. // controller
  2. $data = ['x' => 'y'];
  3. include 'template.php';
  4.  
  5. // template.php
  6. <p><?= $data['x']; ?></p>
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 13/04/2016, 16:09
 
Fecha de Ingreso: marzo-2016
Ubicación: México
Mensajes: 58
Antigüedad: 8 años
Puntos: 3
Respuesta: Lógica bloqueda

más o menos es lo siguiente:

index:
Código HTML:
<form action="controller/hotel.php" method="post">
<label>ubicación</label>
<input type="text" name="lugar">
<button type="submit">Buscar</button>
</form> 
controller/hotel.php:
Código PHP:
require('model/hotel.php');
$lugar=$_POST['lugar'];
$ins=new Hotel();
$res=$ins->lista_hotel($lugar); 
model/hotel.php:
Código PHP:
class Hotel{
public function 
lista_hotel($lugar)
{
   
$sql="select * from hoteles where lugar='$lugar'";
   
$exe=mysqli_query($this->conexion,$sql)or die(mysqli_error());
   
$array=array();
        while (
$res=mysqli_fetch_array($exe,MYSQLI_ASSOC)) {
            
$array[]=$res;
        }
        return 
$array;
    }
 }

ahora ese arreglo que le retorna el modelo al controlador, como hago para que se pueda utilizar los elementos en la vista,soy nuevo en MVC y OO como ya mencioné
  #4 (permalink)  
Antiguo 13/04/2016, 16:33
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Lógica bloqueda

La pregunta es como estas cargando la vista, porque en codeigniter, que creo es asi para todos seria de esta manera:

Código PHP:
Ver original
  1. $res=$ins->lista_hotel($lugar);
  2.  
  3. $data['lista'] = $res;
  4.  
  5.  
  6. $this->load->view('index', $data);

y en la vista seria como cualquier otra cosa:

Código PHP:
Ver original
  1. foreach($lista as $clave=>$valor){
  2.  
  3. //aqui lo que vallas a hacer
  4.  
  5. }
__________________
[email protected]
HITCEL
  #5 (permalink)  
Antiguo 13/04/2016, 17:21
 
Fecha de Ingreso: marzo-2016
Ubicación: México
Mensajes: 58
Antigüedad: 8 años
Puntos: 3
Respuesta: Lógica bloqueda

Bueno, viendo que los dos me contestaron lo mismo, veo que realmente mi duda es como cargo la vista

he leido que puedo pasarla por una variable de sesion, pero no creo que sea lo correcto.
  #6 (permalink)  
Antiguo 13/04/2016, 17:59
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Lógica bloqueda

Caray, ya te he dicho que con usar include basta:

Código PHP:
Ver original
  1. $res=$ins->lista_hotel($lugar);
  2. include 'vista.php';

vista.php
Código PHP:
Ver original
  1. foreach($res as $clave=>$valor){
  2. // ...
  3. }

Entiende que las variables locales están siempre al alcance del include.

Pasarla por sesión es una tontería, no se donde leíste eso pero es pésima idea, ni al caso.

Desde luego el "cómo cargas la vista" es clave, pero o usas un include que es lo más básico, o te inventas una función:
Código PHP:
Ver original
  1. function view($path, $data) {
  2.   ob_start();
  3.   extract($data);
  4.   include $path;
  5.   return ob_get_clean();
  6. }
  7.  
  8. // ...
  9. echo view('vista.php', ['hola' => 'mundo']);
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 14/04/2016, 12:15
 
Fecha de Ingreso: marzo-2016
Ubicación: México
Mensajes: 58
Antigüedad: 8 años
Puntos: 3
Respuesta: Lógica bloqueda

Muchas gracias por la ayuda y el regaño pateketrueke , ya quedó

Etiquetas: 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 13:02.