Hi Levi,
thanks for you reply.

Updated MyPHPTAL.class.php to look like this:
<?php
require_once("globals.php");
require_once("User.class.php");
require_once("PHPTAL.php");

class MyPHPTAL extends PHPTAL{

    public function __construct($path=false){
        parent::__construct($path);

        if( isset($_SESSION[USER_OBJ]) ){
            $this->set('user', $_SESSION[USER_OBJ] );
            $this->set('hasUser', true);
        }
        else{
            $this->set('hasUser', false);
        }

    }

    public function render(){
        // execute the template
        try {
            echo $this->execute();
        }
        catch (Exception $e){
            echo $e;
        }
    }

}
?>
And my controller code looks like this:

<?php
session_start();
require_once("../lib/globals.php");
require_once("../lib/sec_check.php");
require_once("../lib/MyPHPTAL.class.php");

// create a new template object
$template = new MyPHPTAL("home.html");

// put some data into the template context
$template->title = 'Hem';

$template->render();

?>

But I'm still getting the same error for my own custom User class.

The "hasUser" variable and "title" variable both work fine.

Grateful for any suggestions,
 Micke

2009/1/2 Levi Stanley <l...@eneservices.com>

> Forgot to mention
>
> $controller->render() doesn't exist in PHPTAL, so just do the try catch
> print execute stuff you normally do.
>
>
> Levi Stanley wrote:
> > If your controller code is doing something like this:
> >
> > <?php
> >
> >     session_start();
> >     include_once('MyPHPTAL.php');
> >
> >
> >     $controller = new MyPHPTAL('main-page.xhtml');
> >     $controller->set('other_variables', 2.23);
> >     $controller->render();
> >
> > ?>
> >
> > There shouldn't be a problem at all.
> >
> > Best regards,
> > Levi Stanley
> >
> > Mikael Andersson wrote:
> >> Hi
> >>
> >> Discovered this awesome framework a little while ago, really nice!
> >>
> >> I have created my own MyPHPTAL class in which I add a couple of
> >> things to its context (figured that this would be cleaner that
> >> setting them manually in every php page), works fine except for when
> >> I try and add a custom Class of mine.
> >>
> >> I have this in my constructor (actually the complete class) :
> >>
> >> require_once("globals.php");
> >> require_once("User.class.php");
> >> require_once("PHPTAL.php");
> >>
> >> class MyPHPTAL extends PHPTAL{
> >>
> >>     public function __construct($path=false){
> >>         parent::__construct($path);
> >>
> >>         if( isset($_SESSION[USER_OBJ]) ){
> >>             $this->set('user', $_SESSION[USER_OBJ] );
> >>             $this->set('hasUser', true);
> >>         }
> >>         else{
> >>             $this->set('hasUser', false);
> >>         }
> >>
> >>     }
> >>
> >> }
> >>
> >> The User class:
> >>
> >> require_once('UserRole.class.php');
> >> require_once('UserStatus.class.php');
> >>
> >> class User {
> >>     public $id;
> >>     public $fName;
> >>     public $lName;
> >> //cut
> >> }
> >>
> >> When I reference the user object in my template like this:
> >>
> >> <div tal:content="user/fName" tal:condition="hasUser">The users
> >> name</div>
> >>
> >>  I get the following error:
> >>
> >> exception 'PHPTAL_Exception' with message 'Unable to find part
> >> "fName" in path "fName" with base "object"' in
> >> C:\wamp\my_includes\PHPTAL\Context.php:357 Stack trace: #0
> >>
> C:\Windows\Temp\tpl_1230913754_1_1_14templatehtaf12aceee0491df97ea1590f2eb17e87.php(80):
> >> phptal_path(Object(__PHP_Incomplete_Class), 'fName')
> >> #1 C:\wamp\my_includes\PHPTAL.php(466):
> >>
> tpl_1230913754_1_1_14templatehtaf12aceee0491df97ea1590f2eb17e87_page_template(Object(MyPHPTAL),
> >> Object(PHPTAL_Context))
> >> #2
> >>
> C:\Windows\Temp\tpl_1230911056_1_1_14loginhtmlfc12130e5db631fadfdd3a92f0355c5d.php(45):
> >> PHPTAL->executeMacro('template.html/p...')
> >> #3 C:\wamp\my_includes\PHPTAL.php(386):
> >>
> tpl_1230911056_1_1_14loginhtmlfc12130e5db631fadfdd3a92f0355c5d(Object(MyPHPTAL),
> >> Object(PHPTAL_Context))
> >> #4 C:\wamp\www\login.php(51): PHPTAL->execute() #5 {main}
> >>
> >>
> >> The php page using the MyPHPTAL class is calling session_start() at
> >> the very top.
> >>
> >> Have been googling this and have found some information indicating
> >> that the session might be started before the User class definition is
> >> loaded preventing it from properly unserialize the it from the session.
> >>
> >> I'm more of a Java developer than a PHP one so I'm hoping that you
> >> guys can give me some help :)
> >>
> >> Many thanks,
> >>  Micke
> >> ------------------------------------------------------------------------
> >>
> >> _______________________________________________
> >> PHPTAL mailing list
> >> PHPTAL@lists.motion-twin.com
> >> http://lists.motion-twin.com/mailman/listinfo/phptal
> >>
> >
>
>
> _______________________________________________
> PHPTAL mailing list
> PHPTAL@lists.motion-twin.com
> http://lists.motion-twin.com/mailman/listinfo/phptal
>
_______________________________________________
PHPTAL mailing list
PHPTAL@lists.motion-twin.com
http://lists.motion-twin.com/mailman/listinfo/phptal

Reply via email to