New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Have <%inherit> allow arguments, or other easy way to override/pass values #62

Closed
sqlalchemy-bot opened this Issue Oct 13, 2007 · 3 comments

Comments

Projects
None yet
1 participant
@sqlalchemy-bot

sqlalchemy-bot commented Oct 13, 2007

Migrated issue, originally created by Anonymous

Need a way to pass python values to the parent template. Possible solutions:

  • <%inherit> parameters e.g. <%inherit file="base.mako" args="current_tab='Settings'"/>

  • <%def> variant for values e.g. <%def name="current_tab" value="Settings" />

The current way to pass values to base template is by using a <%def>, e.g.:

base.mako

<html>
<% current_tab = self.current_tab() %>
    ...
        <li ${current_tab == 'Home' and 'id="current"' or ''>Home
        <li ${current_tab == 'Settings' and 'id="current"' or ''>Settings
    ...
</html>
<%def name="current_tab()"><% return "Home" %></%def>

hello.mako

<%inherit file="base.mako" />
<%def name="current_tab()"><% return "Settings" %></%def>
....

This syntax is pretty verbose, and calling self.current_tab() can accidentally result in rendered output.

Previous requests for this feature in the mailing list:

http://groups.google.com/group/mako-discuss/browse_thread/thread/5398cd2c3aa0a694

http://groups.google.com/group/mako-discuss/browse_thread/thread/cd01b2821a3a1a57

@sqlalchemy-bot

This comment has been minimized.

sqlalchemy-bot commented Oct 16, 2007

Michael Bayer (@zzzeek) wrote:

theres an impoverished way to do this right now, like this:

# child template

<%!
foo='bar'
%>

<%inherit file="base"/>


# base template
foo is ${self.module.foo}

it would be quite easy to put a special accessor on Namespace called attr, which searches the full inheritance tree of modules for the attribute 'foo':

foo is ${self.attr.foo}

but ive only thought about it for 30 seconds. how does that sound ?

@sqlalchemy-bot

This comment has been minimized.

sqlalchemy-bot commented Feb 15, 2008

Michael Bayer (@zzzeek) wrote:

self.attr is in 5cfffa2

@sqlalchemy-bot

This comment has been minimized.

sqlalchemy-bot commented Feb 15, 2008

Changes by Michael Bayer (@zzzeek):

  • changed status to closed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment