Problema con before_insert

edited mayo 2008 in Principiantes
Tengo lo siguiente:
<?php

class temasController extends StandardForm {
	public $scaffold = true;
	static public $force = true;
	public $template = 'gnr';

	function before_insert() {
		$C(“nombre”).value = htmlentities($C("nombre").value);
						
	}
	
}

?>

Y el problema es que me marca como error de sintaxis el signo =
$C(“nombre”).value = htmlentities($C("nombre").value);
y también el ;

Hice una prueba y puse
alert($C(“nombre”).value);
(sólo para ver si andaba, ya que no tiene nada que ver) y me tiró el siguiente error:
Fatal error: Call to undefined function alert() in C:\wamp\www\gnrtoday\controllers\temas_controller.php on line 9

Invoco a la ayuda del gran Deivison o de algún otro caminante del Olimpo que me saque de las tinieblas <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) -->

Comentarios

  • edited 2:59
    Has probado a cambiar “nombre” por "nombre" (ojo con las comillas).
  • edited 2:59
    Lo que pasa es hay funciones para manejar eventos del lado del servidor y del lado del cliente, en ambos existe una funcion llamada before_insert. Los del servidor se escriben en la clase controladora asi komo tu lo intentaste y los del cliente en un archivo de javascript ".js" que se debe guardar en el directorio public/javascript con el nombre del controlador por ejemplo para tu caso seria temas.js. El problema que te aparecer es porke lo que estas intentando hacer es utilizar funciones que estan definidas para el cliente en el servidor. Y addemas el nombre de la clase creo ke debe empezar en mayusculas.
  • edited 2:59
    Perfecto! El problema que tenía era ese: como before_insert está definida tanto para el server como para el cliente, yo intentaba utilizarlo al revés! gracias! <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->

    de todas formas, no puedo hacer que, antes de guardar en la base de datos, se ejecute la función htmlentities, esto cómo sería? está bien así?:
    $C(&quot;tema&quot;)&#46;value = nl2br(htmlentities($V(&quot;tema&quot;)))
    
  • edited 2:59
    El problema ahora es ke htmlentities es un funcion de php y la estas intentando usar en el archivo javascript por eso no te funciona, una alternativa seria hacerlo en la funcion before_insert del servidor (la clase controladora) que si interpreta codigo php. Espero y te sirva.
  • edited 2:59
    claro, pero cuando pongo esta línea en el before_insert del servidor
    $C(&quot;letra&quot;)&#46;value = htmlentities($V(&quot;letra&quot;));
    
    me tira error en el signo igual y en el punto y coma final.

    y si pongo:
    $C(&quot;letra&quot;) = htmlentities($C(&quot;letra&quot;)&#46;value);	
    o
    $C(&quot;letra&quot;) = htmlentities($V(&quot;letra&quot;));
    
    el explorador me tira el siguiente error:
    Fatal error: Can't use function return value in write context

    ¿cómo sería la sintaxis correcta que debo utilizar?
  • edited 2:59
    Bueno, viendo el screencast, me di cuenta de que debo reemplazar

    $C("letra") por $this->Temas->letra

    era eso, estaba intentando acceder de forma incorrecta al input que contenía la información. Espero que le sirva a alguien más <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->
Sign In or Register to comment.