Ver Mensaje Individual
  #10 (permalink)  
Antiguo 26/09/2011, 05:01
_alb_
 
Fecha de Ingreso: septiembre-2011
Mensajes: 5
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Pasar como parámetro objetos

Creo que es un poco más complejo que eso. La definición del botón y la asignación de la acción es de la forma siguiente:

Código PHP:
Ver original
  1. $apply_button= new CButton("applyButton",S_APPLY_BUTTON);
  2. $apply_button->setAction("javascript: var variable='".$text_box->getValue()."';document.write(variable);");

La clase CButton (métodos relevantes) es la siguiente:

Código PHP:
Ver original
  1. <?php
  2. class CButton extends CTag{
  3.     public function __construct($name='button', $caption='', $action=NULL, $submit=true){
  4.         parent::__construct('input','no');
  5.         $this->tag_body_start = '';
  6.        
  7.         $this->attributes['type'] = $submit?'submit':'button';
  8.  
  9.         $this->setAttribute('value', $caption);
  10.         $this->attributes['class'] = 'button';
  11.         $this->attributes['id'] = $name;
  12.         $this->setName($name);
  13.         $this->setAction($action);
  14.     }
  15.  
  16.     public function setAction($value=null){
  17.         $this->addAction('onclick', $value);
  18.     }
  19. }
  20. ?>

El método addAction de CTag de la que hereda:

Código PHP:
Ver original
  1. public function setAttribute($name, $value){
  2.         if(is_object($value)){
  3.             $this->attributes[$name] = unpack_object($value);
  4.         }
  5.         else if(isset($value))
  6.             $this->attributes[$name] = htmlspecialchars(str_replace(array("\r", "\n"), '', strval($value)));
  7.         else
  8.             unset($this->attributes[$name]);
  9.     }

El problema es que no veo forma de referenciar el valor del objeto creado en php desde js en el momento de apretar el botón. Cualquier otra acción funciona perfectamente al presionar el botón (evento onClick) pero no asocia el valor del text_box en ese momento de presionar, si no el valor en el momento de cargar el objeto en la página (no se si ahora se entenderá un poco mejor o todo lo contrario ...)