Skip to content

Add a helper to check whether a partial is defined #1948

Open
@ReneZeidler

Description

@ReneZeidler

This was previously discussed here. The conclusion was that there currently is no way to check whether a partial is defined, so I'm making a feature request here.

This is mainly useful for inline partials, like the example from the docs.

If you define a partial layout like this:

<div class="nav">
  {{> nav}}
</div>
<div class="content">
  {{> content}}
</div>

it basically has 2 "template parameters" that are passed to the partial using inline partials:

{{#> layout}}
  {{#*inline "nav"}}
    My Nav
  {{/inline}}
  {{#*inline "content"}}
    My Content
  {{/inline}}
{{/layout}}

Now I want to make the nav parameter in my layout partial optional. I can use {{#> nav}}{{/nav}} to avoid an error if the partial is missing. But this will still leave the enclosing <div class="nav"></div> in the output. To avoid this, I need a way to check if the nav partial is defined, for example {{#if (partialDefined "nav")}}. Helpers also don't receive any information about existing partials, so implementing a custom helper for this isn't currently possible either.


In summary, I'd like to be able to do this:

{{#if (partialDefined "nav")}}
  <div class="nav">
    {{> nav}}
  </div>
{{/if}}
<div class="content">
  {{> content}}
</div>
{{#> layout}}
  {{#*inline "content"}}
    My Content
  {{/inline}}
{{/layout}}

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions