Comunidad de diseño web y desarrollo en internet online

foreach sobre elementos nulos (MVC)

Citar            
MensajeEscrito el 21 Ago 2010 10:31 pm
Como se puede procesar respuesas vacias desde una Vista en el modelo MVC?

Hasta ahora todos los ejemplos que he encontrado en la web muestran que la vista recorre los arrays con un foreach. Pero que tal si el valor de ese array es nulo?

Es decir, si el controlador hace una consulta pero la respuesta del modelo es vacía... que acción deberíamos tomar?

Hasta ahora lo que vengo haciendo yo es predefinir el array como nulo, e incluir un condicinal en la Vista, para evitar procesar arrays nulos... Y me gustarían mejores soluciones.

Código PHP :

<?php if (!$theContents['theContents'] == null): ?>
<?php foreach ($theContents['theContents'] as $section): ?>
....
....
....
<?php endforeach;   ?>
<?php endif; ?>

Por mayid

17 de clabLevel



 

opera
Citar            
MensajeEscrito el 22 Ago 2010 01:26 am
puedes contar los elementos del array con count o revisar si te sirve algunas de las tantas funciones apra array que tiene php http://cl.php.net/manual/es/book.array.php

Código PHP :

<?php if (count($theContents['theContents'])): ?>
<?php foreach ($theContents['theContents'] as $section): ?>
....
....
....
<?php endforeach;   ?>
<?php endif; ?>

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 22 Ago 2010 03:22 pm
Mostrar un error 404 :)

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 22 Ago 2010 09:31 pm
Como fuere, entonces voy a tener que poner un condicional en las plantillas si o si. No hay nada que un array php pueda asumir como array nulo sin tirar error...

Por mayid

17 de clabLevel



 

opera
Citar            
MensajeEscrito el 23 Ago 2010 12:04 am
hay varias funciones, por ejemplo:

Código PHP :

 is_array($theContents['theContents']);
count($theContents['theContents']);
array_key_exists('clave',array_key_exists);
 

depende exclusivamente del contexto ;)

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 23 Ago 2010 08:52 pm
Primero, NO hay array nulos. O es un array o no lo es, pero no existen los array Nulos!

Segundo, los foreach no operan sobre elementos nulos, te genera un warning si intentas hacerlo pero no van operar sobre ese elemento.


saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 23 Ago 2010 08:59 pm

Maikel escribió:

Primero, NO hay array nulos. O es un array o no lo es, pero no existen los array Nulos!

Segundo, los foreach no operan sobre elementos nulos, te genera un warning si intentas hacerlo pero no van operar sobre ese elemento.
saludos

justamente lo que quiere es evitar ese warning

pero para eso es cosa de ver si existe el array o si tiene elementos contenidos

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 23 Ago 2010 10:38 pm
Exacto.

Cuando dije "arrays nulos" forcé las cosas. En realidad, yo estoy predefiniendo una variable como nula. Y si no hubiera contenidos desde mysql como para llenar la variable con un array, entonces quedaría como nula.

Recurrí a lo de $var = null; como manera de evitar el warning. Pero como ya me han explicado, la comprobación puede hacerse de otras maneras.

Mi conclusión es que la comprobación siempre debe hacerse. No es algo que suela verse en los ejemplos de MVC, pero debe hacerse.

Gracias!

Por mayid

17 de clabLevel



 

opera
Citar            
MensajeEscrito el 23 Ago 2010 10:59 pm
quizás no aparece como ejemplo de MVC por que es algo aun mas general que este paradigma.

otra cosa que puedes hacer es asignarle si o si un array a ese elemento, asi almenos no te lanzara el warning

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.