Postřehy, které se mohou hodit při začátcích s Nette

  1. Nefunguje mi jQuery
    Toto je jedna z nejčastějších problému na Nette fóru. A příčinou jsou vždy  špatné cesty. Řešení je jednoduché, stačí používat {$basepath}
    Dejme tomu, že jQuery knihovnu budeme mít uloženou ve struktuře www/js/jQuery.jspotom by správný zápis v šabloně měl vypadat takto:

    <script type="text/javascript" src="{$basePath}/js/jQuery.js"></script>
  2. Využití iteratoru ve vnořeném foreach
    Iterator je  inicializovaná proměnná díky které můžeme využít užitečné metody (isFirst(), isLast()) atd… Více naleznete zde. Pokud potřebujete použít iternator z nadřazeného foreach, tak nejjednodušší je si ho uložit do pomocné proměnné.V následující ukázce se iterator vztahuje k nejbližšímu foreach:

    <table>
        {ifset $data}
            {foreach $data as $row}
            <tr>
                {foreach $collums as $key=>$collum}
                    <td n:class"$interator->odd ? listodd : listeven">{$row->$key}</td>
                {/foreach}
            </tr>
            {/foreach}
        {/ifset}
    </table>

    Výstup by vypadal nějak takto:

    <table>
            <tr>
                    <td  class="listodd" >0</td>
                    <td  class="listeven" >test</td>
                    <td  class="listodd" ></td>
            </tr>
            <tr>
                    <td  class="listodd" >0</td>
                    <td  class="listeven" >test</td>
                    <td  class="listodd" >reserved</td>
            </tr>
    </table>

    což je nežádané.

    jednoduchou úpravou (uložením iteratoru do pomocné proměnné) :

    <table>
         {ifset $data}
            {foreach $data as $row}
            {var $firstInterator = $iterator}
            <tr>
                {foreach $collums as $key=>$collum}
                    <td n:class"$firstInterator->odd ? listodd : listeven">{$row->$key}</td>
                {/foreach}
            </tr>
            {/foreach}
        {/ifset}
    </table>

    získáme:

    <table>
            <tr>
                    <td  class="listodd" >0</td>
                    <td  class="listodd" >test</td>
                    <td  class="listodd" ></td>
            </tr>
            <tr>
                    <td  class="listeven" >0</td>
                    <td  class="listeven" >test</td>
                    <td  class="listeven" >reserved</td>
            </tr>
    </table>
  3. Pokud si vytváříte vlastní komponentu a upravujete konstruktor, nikdy nezapomeňte zavolat předka.
    class annyComponent extends Control
    {
        private $pdo;
        public function __construct(\Nette\Database\Connection $pdo){
            parent::__construct();
    
            $this->pdo = $pdo;
        }
    }
Označeno v Nette
4 komentáře “Postřehy, které se mohou hodit při začátcích s Nette
  1. Místo

    <td {if $interator->isOdd()} class="listodd" {else} class="listeven" {/if}>{$row->$key}</td>

    bych psal raději

    <td n:class“$firstInterator->odd ? listodd : listeven“>{$row->$key}</td>

    viz http://doc.nette.org/cs/default-macros#toc-n-class

  2. a napsal:

    n: makro v javascriptu? Lze? a jak použít

Napsat komentář k Filip Procházka (@HosipLan) Zrušit odpověď na komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

*

Můžete používat následující HTML značky a atributy: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="">

O AUTOROVI BLOGU

Jmenuji se Jan Matoušek a jsem vývojář webových aplikacích.

Mé portfolio