Skip to content
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

Future topic and feature wishlist #242

Open
flosch opened this issue Sep 13, 2020 · 4 comments
Open

Future topic and feature wishlist #242

flosch opened this issue Sep 13, 2020 · 4 comments

Comments

@flosch
Copy link
Owner

flosch commented Sep 13, 2020

Based on user input I put up a list of topics I'm considering for future pongo2 versions:

Feel free to add any ideas and wishes as comments below.

@flosch flosch pinned this issue Sep 14, 2020
@egeozcan
Copy link

egeozcan commented Oct 14, 2021

I'd love to see inline extends (like include but with slots)

base.tpl (not relevant but just to make it clear)

<html><body>
    {% block body %}{% endblock %}
</body></html>

modal.tpl (a reusable component with three slots)

<section class="modal">
    <header>{% block header %}{% endblock %}</header>
    <article>{% block body %}{% endblock %}</article>
    <footer>{% block footer %}{% endblock %}</footer>
</section>

page_with_modal.tpl:

{% extends "base.tpl" %}

{% block body %}
    Hello world!!
    <!--  so include also providing a slot mechanism like extends, enabling reusable components -->
    {% include "modal.tpl" %}
        {% block header %}Modal title{% endblock %}
        {% block body %}Lorem ipsum{% endblock %}
        {% block footer %}Modal footer{% endblock %}
    {% endinclude %}
{% endblock %}

@egeozcan
Copy link

egeozcan commented Oct 9, 2022

@flosch hi there! after a year, I just wanted to check if you think what I suggested above would be good idea. if so, and you don't have time, maybe I can give it a go?

@flosch
Copy link
Owner Author

flosch commented Oct 13, 2022

@egeozcan Is there any existing implementation of this feature in other well-known template engines?

@egeozcan
Copy link

egeozcan commented Oct 14, 2022

@flosch

In Vue.js and Web Components, this is possible with named slots. In angular, projections are used, and in React, you can pass components as parameters and render them anywhere.

On the server side: Symfony has something similar with named slots. Laravel/Blade also has slots. Django has Slippers, and I was told that Django Components can do something similar but I've never used it.

My use case is, I want to create Alpine.js components on the server side, with injection points.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants