[Zope] Acquisition question

Dieter Maurer dieter at handshake.de
Tue Aug 29 13:20:22 EDT 2006


Ferhat Ayaz wrote at 2006-8-28 11:06 -0700:
>Here my question:
>
>You can do acquisition on URL like
>
>http://localhost:8080/employee_by_id/emp_id/2/viewEmployee
>
>here the result of employee_by_id (param is emp_id=2)
>is used by viewEmployee.
>
>But I want to use it in a page template like
>
><td tal:content=
>   "structure mployee_by_id/emp_id/2/viewEmployee">
></td>
>
>Unfortunatly this will not work like the above
>example.

The reason for this different behaviour is that a
ZSQL method uses a traversal hook to implement the
"<method>/<parameter>" feature.
This traversal hook is only activated during URL traversal
but not for path expression evaluation.

Fortunately, you do not need this hook in TALES.
You can instead use a Python expression to call
the ZSQL Method explicitely:

    <td tal:content="
      structure python:employee_by_id(emp_id=2).viewEmployee()
      " />

This will work only (reliably) when "viewEmployee" is
a PageTemplate (not a DTML object).

For a DTML object "viewEmployee" you could use:

   <td tal:define="employee python:employee_by_id(emp_id=2)"
     tal:content="employee/viewEmployee"
     />

You find the reason for this strange DTML object behaviour
in the "Calling DTML objects" section of

  <http://www.dieter.handshake.de/pyprojects/zope/book/chap3.html>



-- 
Dieter


More information about the Zope mailing list