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

Pasar un array por el url

Estas en el tema de Pasar un array por el url en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buenas, he llegado a este punto con mi framework del que no he conseguido pasar. Espero que me puedan ayudar. Tengo esta clase que la ...
  #1 (permalink)  
Antiguo 25/07/2011, 10:30
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 402
Antigüedad: 15 años, 4 meses
Puntos: 20
Pasar un array por el url

Buenas, he llegado a este punto con mi framework del que no he conseguido pasar. Espero que me puedan ayudar.

Tengo esta clase que la uso como una clase de administrar el contenido de mi web con solo pasar algunos parametros por la url de la web:

Código PHP:
class AdminModules {
    
    var 
$options = array();
    
    function 
__construct(){
        
$ImgOperations = new ImgOperations();
    }
    
    function 
load($options){
        
print_r($options);
        
/*foreach($options as $option){
            $this->$option;
        }*/
    
}
    
    private function 
checkFileNamePhotos(){
        
$this->ImgOperations->checkFileName["photos"] = false;
    }
    private function 
checkFileNameThumbs(){
        
$this->ImgOperations->checkFileName["thumbs"] = false;
    }
    

y aqui es donde los recojo y los envio a la clase

Código PHP:

if(isset ($_GET['opt'])){
        
$opt $_GET['opt'];
        
$AdminModules->load($opt);
    } 
Antes para cada valor que queria pasar y ejecutar una function tenia una variable distinta, ahora quiero pasar un array y meter alli los valores que necesita por el momento.

Es decir intento hacer algo como esto, al pasar esto: &opt=checkFileNamePhotos,checkFileNameThumbs que sea valores bool para el array $options y luego con un foreach pasarlos cada uno a la function indicada.


Que me decis, como seria esto posible? Otras ideeas?
  #2 (permalink)  
Antiguo 25/07/2011, 10:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Pasar un array por el url

Tendrías que pasarlos como ?opt[]=checkFileNamePhotos&opt[]=checkFileNameThumbs, así es como puedes pasar el array por URL y PHP lo decodificará y te dara un array de elementos.

Saludos.
  #3 (permalink)  
Antiguo 25/07/2011, 10:36
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 402
Antigüedad: 15 años, 4 meses
Puntos: 20
Respuesta: Pasar un array por el url

Aja, entiendo... los tengo que pasar por separado... muchas gracias GatorV, como siempre tu ayuda es muy clara y bien venida.

salu2

Edit:
Se me ocurre una solucion para no tener tanto que poner en la url... pasarlos tal como lo dije mas arriba "&opt=checkFileNamePhotos,checkFileNameThumbs" y luego recoger la variable y hacerle un explode a la `coma`. No?

Voy a probarlo ahora mismo
  #4 (permalink)  
Antiguo 25/07/2011, 10:39
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Pasar un array por el url

Así es eso también sirve.

Saludos.
  #5 (permalink)  
Antiguo 25/07/2011, 12:12
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 402
Antigüedad: 15 años, 4 meses
Puntos: 20
Respuesta: Pasar un array por el url

Tengo otro problemita, no consigo cambiar los valor de la otra clase pasando esto

Código PHP:

    
    
function __construct(){
        
$ImgOperations = new ImgOperations();
    }
    private function 
checkFileNamePhotos(){
        
$ImgOperations->checkFileName['photos'] = true;
    } 
en la otra clase tengo
Código PHP:
public $checkFileName = array(
                                    
"photos" => false,
                                    
"thumbs" => false
                                
);
public 
$checkThumbs false;
 if(
$this->checkThumbs){
                    echo 
"Check thumbs true";
                    
self::create_thumb();
                }

                if(
$this->checkFileName['photos']){
                    echo 
"Photos true";
                    foreach (
$this->files as $file){
                        
Filter::cleanFileName($file);
                    }
                }else{
                    echo 
"Photos false<br/>";
                }
                
                if(
$this->checkFileName['thumbs']){
                    echo 
"Thumbs true";
                    foreach (
$this->tfiles as $tfile){
                        
Filter::cleanFileName($tfile);
                    }                    
                }else{
                    echo 
"Thumbs false";
                } 
Pero nada cambia, siempre me sale el false. Que podria estar yo haciendo mal?
  #6 (permalink)  
Antiguo 25/07/2011, 13:15
Avatar de SetheR  
Fecha de Ingreso: enero-2009
Mensajes: 265
Antigüedad: 15 años, 10 meses
Puntos: 44
Respuesta: Pasar un array por el url

A esa te contesto yo. Debes almacenar los objetos 'ImgOperations' como variables de clase, por ejemplo

Código PHP:
Ver original
  1. private $ImgOperations;

y luego acceder a ellos a traves de

Código PHP:
Ver original
  1. $this->ImgOperations;


Un saludo.
  #7 (permalink)  
Antiguo 25/07/2011, 14:15
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 402
Antigüedad: 15 años, 4 meses
Puntos: 20
Respuesta: Pasar un array por el url

Cita:
Iniciado por SetheR Ver Mensaje
A esa te contesto yo. Debes almacenar los objetos 'ImgOperations' como variables de clase, por ejemplo

Código PHP:
Ver original
  1. private $ImgOperations;

y luego acceder a ellos a traves de

Código PHP:
Ver original
  1. $this->ImgOperations;


Un saludo.
Lo estare poniendo mal porque no me funcciona.

Intente

Código PHP:
-> private $ImgOperations;
-> private var 
$ImgOperations;
-> private 
$ImgOperations '';
-> private var 
$ImgOperations ''
Sin exito alguno...
  #8 (permalink)  
Antiguo 25/07/2011, 14:23
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Pasar un array por el url

Es private $ImgOperations y desde dentro de tus métodos usas $this:
Código PHP:
Ver original
  1. class Foo
  2. {
  3.        private $_bar = null;
  4.  
  5.        public function something()
  6.        {
  7.               $this->_bar = 'foo';
  8.        }
  9.  
  10.        public function __toString()
  11.        {
  12.               return $this->_bar;
  13.        }
  14. }

Saludos.
  #9 (permalink)  
Antiguo 25/07/2011, 14:42
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 402
Antigüedad: 15 años, 4 meses
Puntos: 20
Respuesta: Pasar un array por el url

Nada, no tira para nada... la clase esta inicializada le hago un var_dump y todo bien pero no escribe valores en ella.

Entiendo lo que dices GatorV, y es lo que estoy haciendo pero por alguna razon no tira
  #10 (permalink)  
Antiguo 25/07/2011, 14:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Pasar un array por el url

Si pero no la estas asignando a nada, en tu __construct() solamente tiene $ImgOperations es por eso que en los métodos no ve nada.
  #11 (permalink)  
Antiguo 25/07/2011, 14:54
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 402
Antigüedad: 15 años, 4 meses
Puntos: 20
Respuesta: Pasar un array por el url

Hmm, perdoname pero no entiendo lo que acabas de decir.

Yo en el __construct() le estoy pasando esto:

Código PHP:

private $ImgOperations;

function 
__construct(){
$this->ImgOperations = new ImgOperations();

Que otra cosa le tendria que pasar, ya que tengo la clase llamada y en otro sitio me funciona!?
  #12 (permalink)  
Antiguo 25/07/2011, 14:56
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Pasar un array por el url

Así es correcto, ahora como usas esa variable, también la tienes que usar con $this->.

Saludos.
  #13 (permalink)  
Antiguo 25/07/2011, 15:30
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 402
Antigüedad: 15 años, 4 meses
Puntos: 20
Respuesta: Pasar un array por el url

Es lo que estoy aciendo pero no tiene efecto

Código PHP:
function checkThumbs(){
        echo 
"estoy en checkThumbs </br>";
        
$this->ImgOperations->checkThumbs true;
    } 
  #14 (permalink)  
Antiguo 25/07/2011, 15:40
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Pasar un array por el url

y como mandas llamar checkThumbs()?
  #15 (permalink)  
Antiguo 26/07/2011, 08:50
 
Fecha de Ingreso: junio-2009
Ubicación: Madrid
Mensajes: 402
Antigüedad: 15 años, 4 meses
Puntos: 20
Respuesta: Pasar un array por el url

en la otra clase donde esta el checkThumbs() va asi

Código PHP:
class ImgOperations{
         
        
/**
        * Check if thumbs are created?
        * @var bool    
        */
        
public $checkThumbs false;

public function 
load($type){ 
            if(
$this->checkThumbs){
             echo 
"Check thumbs true<br/>";
                 
self::create_thumb();
             }else{
         echo 
"Check thumbs false <br/>";
        }
... 
Tambien mando esa variable desde otro sitio y de alli todo perfeto (con la siguiente linea comentada o no, no tiene efecto):

Código PHP:
$ImgOperations = new ImgOperations();
$ImgOperations->checkThumbs false
  #16 (permalink)  
Antiguo 26/07/2011, 08:57
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Pasar un array por el url

Pues es difícil ver como tienes el contexto de tu aplicación y porque no tiene efecto la llamada, pero tendrías que hacer debug y ver en parte de tu código mandas llamar a AdminModules::checkThumbs() y ver en esa parte si esta afectando o no la llamada.

Saludos.

Etiquetas: arrays, oop
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 12:25.