contributte / planette-site

💀 [DISCONTINUED] All the roads go through the Planette
https://planette.vercel.app
MIT License
9 stars 3 forks source link

2010-01-30: historie-snippety-a-ajax #66

Open paveljanda opened 7 years ago

paveljanda commented 7 years ago
1. Prahistorická podpora AJAXu v Nette
2. Snippety, zavináčová magie a IPartiallyRenderable aka Staré snippety
3. Snippety jako bloky aka Nové snippety
Podrobný popis principu starých snippetů
  1. Celá šablona se obalila jednou podmínkou if (!majiSeRenderovatPouzeSnippety) { a }

Např. jednoduchá šablona

<p>Ahoj světe!</p>
<p>Mám rád Nette!</p>

se přeložila jako

<?php if (!majiSeRenderovatPouzeSnippety): // automatický podmínka okolo celé šablony ?>
        <p>Ahoj světe!</p>
        <p>Mám rád Nette!</p>
<?php endif; // konec automatické podmínky okolo celé šablony ?>
  1. Vložení snippetu rozbilo tuto obalovací podmínku, takže tato šablona
<p>Ahoj světe!</p>
{snippet}<p>Mám rád AJAX!</p>{/snippet}
<p>Mám rád Nette!</p>

se přeložila jako

<?php if (!majiSeRenderovatPouzeSnippety): // automatická podmínka okolo celé šablony ?>
        <p>Ahoj světe!</p>
<?php endif; // {snippet} ?>

<p>Mám rád AJAX!</p>

<?php if (!majiSeRenderovatPouzeSnippety): // {/snippet} ?>
        <p>Mám rád Nette!</p>
<?php endif; // konec automatické podmínky okolo celé šablony ?>

Čímž došlo při majiSeRenderovatPouzeSnippety = TRUE k vykreslení pouze obsahu snippetu.

Zavináče pak řešili následující problém a to, že šablona:

<p>Ahoj světe!</p>
{if $mamRadAjax}
    {snippet}<p>Mám rád AJAX!</p>{/snippet}
{/if}
<p>Mám rád Nette!</p>

se přeloží jako

<?php if (!majiSeRenderovatPouzeSnippety): // automatická podmínka okolo celé šablony ?>

        <p>Ahoj světe!</p>

        <?php if ($mamRadAjax): // {if ...} ?>
        <?php endif; // {snippet} ?>

        <p>Mám rád AJAX!</p>

        <?php if (!majiSeRenderovatPouzeSnippety): // {snippet} ?>
        <?php endif; // {/if} ?>

        <p>Mám rád Nette!</p>

<?php endif; // konec automatické podmínky okolo celé šablony ?>

Po doplnění zavináčů do šablony

<p>Ahoj světe!</p>
@{if $mamRadAjax}
    {snippet}<p>Mám rád AJAX!</p>{/snippet}
@{/if}
<p>Mám rád Nette!</p>

se šablona přeložila správně jako

<?php if (!majiSeRenderovatPouzeSnippety): // automatická podmínka okolo celé šablony ?>
        <p>Ahoj světe!</p>
<?php endif; // díky @ ?>

<?php if ($mamRadAjax): // díky {if $mamRadAjax} ?>
        <?php if (!majiSeRenderovatPouzeSnippety): // díky @ ?>
        <?php endif; // díky {snippet} ?>

        <p>Mám rád AJAX!</p>

        <?php if (!majiSeRenderovatPouzeSnippety): // díky {/snippet} ?>
        <?php endif; // díky @ ?>
<?php endif; // díky {/if} ?>

<?php if (!majiSeRenderovatPouzeSnippety): // díky @ ?>
        <p>Mám rád Nette!</p>
<?php endif; // konec automatické podmínky okolo celé šablony ?>

{{tags: snippety, ajax}}

{{author: Jan Tvrdík|1657}}

paveljanda commented 7 years ago

author: Honza Kuchař (honza.kuchar@grifart.cz)