{ifset} – undefinet variable

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
rostislavcz
Člen | 8
+
0
-

Zdravím,

mám malý dotaz, asi něco dělám špatně nebo plně nechápu k čemu slouží makro {ifset}.

Dal jsem do šablony něco takového :

{ifset $article} <p>kód článku</p> {/ifset}

<p>a poté to zase pokračuje html kód</p>

Když mám vypnutý Debugger a proměnná $article nastavená není, tak je vše ok, ovšem když je Debugger zapnutý (a $article nastavený není), tak mi vyskočí undefinet variable $article…

Já přeci nepotřebuji vědět, že tato proměnná není nastavená, když tam mám vloženou podmínku ifset. Nevíte prosím někdo, v čem dělám chybu a nebo jak se dá nějak zrušit vyhazování této chyby?

v šabloně mám pouze tohle:

{ifset $article}
<article>
                <header>
                <h2 n:block="title">{$article->title}</h2>

                {if $user->isInRole('admin')}<a n:href="Administration:edit $article->id">Upravit</a>{/if}
                {if $user->isInRole('admin')}<a n:href="Administration:delete $article->id">Odstranit</a>{/if}
                </header>

                <section>
                    {!$article->content}

                </section>

                <footer>
                     {!$article->footer}
                </footer>

                <ul id="nextArticle">
                        <li>{if $article->id -1 > 0} <a n:href="Basic:uvod $article->id -1">Předchozí článek</a>{/if}</li>
                        <li id="right">{if $article->id +1 <= $count} <a n:href="Basic:uvod $article->id +1">další článek</a>{/if}</li>
               </ul>
</article>
     {/ifset}

a v presenteru

public function renderUvod($postId) {

          if($postId)
           {
               $post = $this->uvodRepository->fetchOne($postId);
           if (!$post) {
               $this->error("stránka nebyla nalezena");
           }

               $this->template->article = $post;
           }

Editoval rostislavcz (23. 9. 2014 18:01)

Azathoth
Člen | 495
+
0
-

Ukaž presenter. Předáváš do proměnné $article v presenteru správnou hodnotu?
Nepředáváš tu proměnnou někde debuggeru? Třeba bardumpu nebo tak?

Editoval Azathoth (23. 9. 2014 17:53)

David Matějka
Moderator | 6445
+
0
-

Jsi si jisty, ze nikde mimo ifset blok se nesnazis pracovat s tou promennou?

rostislavcz
Člen | 8
+
0
-

Ne mimo ifset $article nepoužívám

David Matějka
Moderator | 6445
+
0
-

Tu „undefined variable“ hlasku to hlasi ve zkompilovane sablone na radku, kde je neco jako

if(isset($article)) {

?

rostislavcz
Člen | 8
+
0
-

Právě jsem přišel v čem byla chyba…
Bylo to kvůli tomu, že tam je n:block=„title“

<h2 n:block="title">{$article->title}</h2>

z nějakého důvodu to je správně takto, ale popravdě nevím proč… myslel jsem, že pokud jednou ifset neplatí, tak že vůbec nebude hledět na to co je uvnitř, ani když se tam definuje block…

<h2 n:block="title">{ifset $article->title}{$article->title}{/ifset}</h2>