Since I was struggling with this too, I'm very interested in your
view.
I use a different approach:
since a PHP-driven website usually consists of many .php scripts, I
like to keep my templates organised in a
1-template-for-each-php-script (eg. index.php uses index.tpl,
subscribe.php uses subscribe.tpl). Otherwise you're more busy with
opening and closing templates to make changes (and trying to remember
which file you need) than making the changes.
I have 1 file (general.tpl) that holds the general page structure of
every page, and then the 1-template-per-script as described above.
my general.tpl has something like (more complex than the example below
of course)
html metal:define-macro=globalpage
body
div id=header tal:define-slot=header/div
div id=content tal:define-slot=content/div
div id=footer tal:define-slot=footer/div
/body
/html
Every script then calls it's own template file (eg index.tpl)
with
tal:block metal:use-macro=general.tpl/globalpage
tal:block metal:fill-slot=content
Content of page goes here...
/tal:block
/tal:block
If I have a page that needs to show different pages (eg: form +
feedback after submission + error if required), eg register.tpl
tal:block metal:use-macro=general.tpl/globalpage
tal:block metal:fill-slot=content tal:condition=php:
template=='form'
form method=post
username: input type=text name=username/
Pwd: input type=password name=pwd/
input type=submit name=submit value=Register/
/form
/tal:block
tal:block metal:fill-slot=content tal:condition=php:
template=='succeed'
your registration was successfull
/tal:block
tal:block metal:fill-slot=content tal:condition=php:
template=='failed'
your registration was not successfull. please try again.
/tal:block
/tal:block
register.php would then set $phptal-template = 'succeed' etc to show
the correct template...
In these circumstances, using AJAX to retrieve only part of the page
is harder. Do you have any feedback on that? For maintenance and
support, I really really like to keep my templates grouped with the
script. I know I could create a register_form.tpl,
register_succeed.tpl, register_failed.tpl etc but this quickly
becomes a cumbersome operation to open/close all those docs, let alone
if you have a PHP script that runs through multiple, consequetive
forms.
On 18.09.2009, at 23:34, hosema...@poczta.onet.pl wrote:
Hi
I am working on ajax php website. Ajax makes using phptal more
complicated.
My approach is to divide single page to several php files and every
time at single page i create new object of $tpl. It means that I
have to use several $tpl-execute() at the first page load. I think
it is not optimal.
My question is whether there is most efective way to use phptal and
ajax?
page.xhtml:
body
stuff
tal:block metal:use-macro=widget.xhtml/show_widget /
stuff
/body
widget.xhtml:
div metal:define-macro=show_widget
ajax me!
/div
tal:block metal:use-macro=show_widget /
This will let you either execute page.xhtml with all stuff in it, or
execute widget.xhtml and just output that single fragment. You can use
variables in use-macro (e.g. show_${name}), so you're not limited to
one thing per file.
___
PHPTAL mailing list
PHPTAL@lists.motion-twin.com
http://lists.motion-twin.com/mailman/listinfo/phptal