FAQ aneb časté dotazy

Zde naleznete odpovědi na některé nejčastěji kladené dotazy. Pokud Vám nebudou jasné některé používané pojmy, podívejte se do slovníčku pojmů.

Hosting neumožňuje změnu root složky

Poměrně často narazíte na sdílený hosting, který Vám neumožní změnit root adresář (respektive určí vám, do kterého adresáře musíte nahrát aplikaci). Sandbox Nette nicméně předpokládá, že rootem bude složka www.

Existuje jednoduché řešení. Všechny požadavky necháte směrovat do podsložky www. Vyžaduje web server Apache s aktivním mod_rewrite.

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$
RewriteRule ^$ www/ [L]
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$
RewriteRule (.*) www/$1 [L]

Obě výše uvedené direktivy RewriteCond nejsou nutné, nicméně jejich existenci uvítáte ve chvíli, kdy budete projekt vyvíjet lokálně.

Nezapomeňte zkontrolovat, zda app, libs, log a temp obsahují .htaccess se zákazem přístupu do těchto složek, aby vám někdo nemohl přečíst konfigurační soubory či logy s chybami.
(Např. http://example.com/app/config/config.neon)

Bílá stránka po nahrání na hosting

Postupně projdeme tyto kroky:

  1. smažeme obsah složky temp/,
  2. zkontrolujeme, zda je povolen zápis tam, kde má být povolen (tj. složky log/ a temp/),
  3. zkusíme odkomentovat RewriteBase v .htaccess,
  4. zkontrolujeme logy (složka logs/),
  5. zapneme laděnku.

Zrušení persistentního parametru

Podíváme se do presenteru, jakou má nastavenou výchozí hodnotu:

/** @persistent int */
public $page;

a tu mu předáme při vytváření odkazu:

<a href="{link someAction, page => null}">someWhere</a>
<!-- nebo -->
<a n:href="someAction, page => null">somweshWere</a>

Použítí {} v šabloně

Latte filter používá {} jako „řídící“ znaky. Pokud potřebujete v šabloně napsat {} (například u JavaScriptu), musíte za { udělat mezeru, pak následující část nebude brána jako makro.

Lze také použít Latte makra {l} resp. {r} pro vykreslení levé resp. pravé závorky.

Texy!

Nainstalujeme Texy! pomocí Composeru : composer require texy/texy

Nyní je třeba zaregistrovat si filtr (dříve se tomu říkalo helper) texy, což lze udělat dvěma způsoby:

  • ručně v presenteru (BasePresenteru)
  • pomocí konfigurátoru v config.neon

V presenteru :

protected function createTemplate($class = null)
{
    $template = parent::createTemplate($class);
    $template->addFilter('texy', [new \Texy(), 'process']);
    return $template;
}

Pomocí config.neon:

services:
    nette.latteFactory:
        setup:
            - addFilter('texy', [\Texy(), process])

A nyní už v šabloně stačí použít např.:

{block|texy}
třeba **tučné** písmo nebo *kurzíva*
{/block}

Odkazování v modulech

Do jiného modulu musíme odkázat pomocí absolutního názvu presenteru, tj. s dvojtečkou na začátku:

<!-- Relativní odkaz na modul -->
<a href="{link Foo:Default:default}">link</a>
<!-- nebo -->
<a n:href="Foo:Default:default">link</a>

<!-- Absolutní odkaz na modul -->
<a href="{link :Foo:Default:default}">link</a>
<!-- nebo -->
<a n:href=":Foo:Default:default">link</a>

Zapnutí laděnky v produkčním prostředí

Pokud z nějakého důvodu potřebujeme na produkčním serveru zapnout laděnku, v souboru app/bootstrap.php hned za vytvoření instance třídy Configurator přidáme tento řádek:

$configurator->setDebugMode(true);

Pokud chcete zapnout vývojový režim jen pro některé počítače, můžete předat metodě seznam IP adres klientů (nikoliv serveru), pro které bude vývojový režim povolen.

Pokud tedy Váš počítač má IP adresu například 192.168.1.215, upravte volání takto:

$configurator->setDebugMode('192.168.1.215');

Více IP adres by bylo odděleno čárkou.