Re: Re: Extending HTML_Template_IT not working anymore
| From: | Martín Marqués | Date: | Tue, 13 Apr 2010 15:34:33 +0000 |
| Subject: | Re: Re: Extending HTML_Template_IT not working anymore | ||
| References: | 1 2 3 4 | Groups: | php.pear.general |
| Request: | Send a blank email to pear-general+get-30458@lists.php.net to get a copy of this message | ||
El día 13 de abril de 2010 11:38, Ward Morris <morris.ward@gmail.com> escribió:
> Martin, you're probably going to have to dig in deeper and provide us with
> better debugging information to help you. Is anything output? What do the
> class variables look like before parsing? Are you getting any errors?
No errors.
> I'm really not familiar with HTML_Template_IT, but I don't see a parseJS()
> function in the documentation. Not sure what class contains that function
> in your application or what it's doing.
parseJS is a method from the class HTML_UNL defined like:
public function parseJS(){
for($i=0; $i < count($this->jsFiles); $i++){
$this->setCurrentBlock("jsfile");
$this->setVariable("JSFILE",$this->jsFiles[$i]);
$this->parseCurrentBlock();
}
}
jsFiles is an array with the name of the JS files, and the jsfile
block has a script object in the header that loads the JS file. Same
thing happens with parseCSS().
I found out that changing the order of parent::__construct() with the
other methods in the constructor made somethings work: particularly
setVariable() calls from outside my Class.
Very strange behavior.
>
> 2010/4/13 Martín Marqués <martin.marques@gmail.com>
>>
>> 2010/4/9 Gregory Currie <gregory.currie@gmail.com>:
>> >
>> > Martín,
>> >
>> > I believe you are using incorrect syntax for calling a parents
>> > constructor.
>> >
>> > The constructor code should look something like this (with php 5.3):
>> >
>> > function __construct($html_dir="",$template_file=""){
>> >
>> > parent::__construct($html_dir);
>> >
>> > if ($template_file!=="") {
>> > $this->loadTemplatefile($template_file,true,true);
>> > }
>> >
>> > }
>> >
>> > Please try that and let us know how you go.
>>
>> OK, I changed some things. First I'll explain the extends of my clases:
>>
>> HTML_UNL extends HTML_Template_IT
>> Cascara extends HTML_UNL
>> printLogin extends Cascara
>>
>> Now this is what I have in each one of these Classes:
>>
>> class HTML_UNL EXTENDS HTML_Template_IT {
>>
>> function __construct($html_dir="",$template_file=""){
>> // Llamamos al contructor del padre, por si las moscas
>> parent::__construct($html_dir);
>>
>> if($template_file!==""){
>> // Cargo la plantilla
>> $this->loadTemplatefile($template_file,true,true);
>> }
>> }
>> ...
>> }
>>
>>
>> Class Cascara EXTENDS HTML_UNL {
>>
>> function __construct($plantilla = false){
>> // Llamamos al contructor del padre, por si las moscas
>> parent::__construct("templates");
>>
>> // Cargo la plantilla
>> if($plantilla === false)
>> $this->loadTemplatefile("cascara.html",true,true);
>> else
>> $this->loadTemplatefile($plantilla,true,true);
>> }
>> ...
>> }
>>
>>
>> class printLogin extends Cascara {
>>
>> function __construct(){
>> // Llamamos al contructor del padre, por si las moscas
>> // Cargamos la plantilla
>> parent::__construct("login.html");
>>
>> // The methods below come from the parent
>>
>> // Mandamos el mensaje de error si hace falta.
>> $this->fallo();
>>
>> $this->addJSFile("js/verifform.js");
>> $this->addJSFile("js/setfocus.js");
>> $this->parseJS();
>> $this->setForm();
>>
>> }
>> ...
>> }
>>
>> No luck. Variables outside of defined blocks don't get parsed with
>> setVariable()
>> --
>> Martín Marqués
>> select 'martin.marques' || '@' || 'gmail.com'
>> DBA, Programador, Administrador
>>
>> --
>> PEAR General Mailing List (http://pear.php.net/)
>> To unsubscribe, visit: http://www.php.net/unsub.php
>>
>
>
>
> --
> Ward Morris
>
> morris.ward@gmail.com
> mobile: (573) 434-1056
>
--
Martín Marqués
select 'martin.marques' || '@' || 'gmail.com'
DBA, Programador, Administrador