Rady, tipy a řešení problémů nejen pro Nette

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

Několik rad, tipů a řešení různých problémů. Téma budu průběžně aktualizovat a rozšiřovat. Snad to někomu pomůže.

Nette

Produkční režim, místo Error 404 se zobrazuje pouze Error 500

V bootstrap.php nastavte $application->catchExceptions = TRUE;

Přidání hodnoty/poznámky/vysvětlivky za input ve formuláři
	$form->addText('date', 'Datum')
		->setOption('description', 'Zadávejte ve formátu: DD-MM-RRRR HH:SS');
Routa – parametr s obsahující lomítka
$route = new Route('//files.example.com/<path .+>', array(
	'presenter' => 'File',
	'action' => 'default',
	'path' => array(
		Route::VALUE => NULL,
		Route::FILTER_IN => NULL,
		Route::FILTER_OUT => NULL,
	),
));
Nette\InvalidStateException: session_start(): session_start(): Cannot send session cache limiter – headers already sent …
  1. Příčina: Na začátku některého Vašeho souboru se nachází BOM sekvence
    • řešení: odstraňte BOM sekvenci
  2. Příčina: sessions startují až v render fázi
    • řešení: je nutné nastartovat sessions včas (např. manuálně v bootstrapu)
	$container = $configurator->loadConfig(__DIR__ . '/config.neon');
	$container->session->start();

Texy

Odstranění tagů
  1. zavoláme $texy->process($text);
  2. tím si Texy vytvoří DOM
  3. zavoláme $texy->toText(); → tím se nám vrátí z DOM vygenerovaný čistý text bez HTML tagů
Reference s parametrem

Editoval janpecha (7. 12. 2011 21:32)

gawan
Člen | 110
+
0
-

celkom pekné tipy, len sa mi zdá, že písať to takto do fóra nie je najlepšie. Keď toho bude viac, nebude sa dať v tom dobre hľadať aj teraz podľa názvu topicu sa nedá určiť jeho obsah.
Možno by bolo lepšie vyrobiť nejakú stránku na wiki a každý tip by bol sa samostatná linka s názvom a možno nejakými tagmi, podľa ktorých by sa dalo vhodne vyhľadávať.

pawouk
Člen | 172
+
0
-

Taky si myslím že se v tom za chíli nikdo nevyzná. Mimochodem jak jsi přišel na to že se 404 v produkčním režimu nezobrzí? Pokud vím zobrazí se úplně stejně jako 500 podle dané šablony.

Na odstanění tagu existuje v PHP funkce strip_tags

janpecha
Backer | 75
+
0
-

2gawan: Nad tou wiki jsem už taky přemýšlel a asi to tak i udělám, jen mi teď přišlo zbytečné pro těch 6 bodů speciálně vytvářet stránku na wiki. Ale až se to rozroste, tak stránka na wiki bude bezpodmínečně nutná.

2pawouk: o strip_tags samozřejmě vím, jen mi přišlo zajímavé zkusit to přes Texy :) K té 404, máš pravdu, samozřejmě se vyhodí chyba, stejně jako u 500, spíš jde o to, že se místo „404 – Page Not Found“ zobrazí „500 – Internal Server Error“, aspoň to tak dělalo, teď jsem to nezkoušel. EDIT: úvodní příspěvek jsem upravil, aby to bylo jasnější.

Editoval janpecha (7. 12. 2011 21:33)

pawouk
Člen | 172
+
0
-

To nevím jestli to tak někdy dělalo, ale ted to tak rozhodne nedela. Normalne to vyhodi sablonu 404 a jestli ti to vyhazuje 500 tak je chybe nekde v aplikaci. Az rozjedes tu wikinu tak dej vedet, ale asi nejszlozitejsi na to bude to udelat prehledne, protože tyhle rady a typy se dají hrozně těžko řadit do nějakých kategorii, nicméně jich je strašně moc…

JuniorJR
Člen | 181
+
0
-

Tu 500 aplikace vyhodí automaticky za předpokladu, že je hodnota proměnné

$application->catchExceptions = FALSE;

A jelikož je hodnota této proměnné na PRODUCTION implicitně TRUE, zobrazí se korektně 404. Zatímco na DEV je to ve výchozím nastavení, nemýlím-li se 500.

Editoval JuniorJR (7. 12. 2011 22:13)

Patrik Votoček
Člen | 2221
+
0
-

Not found (404) se totiž v Nette vyhazuje jako vyjímka. V produkčním režimu ji zachytí ErrorPresenter a vykreslí korektní stránku 404. Nicméně ve vývojovém režimu se chyba nezachytí (protože není aktivní ErrorPresenter) a vykreslí se laděnka (vykreslení laděnky == 500).

Btw s tímhle určitě na WIKI!

Jan Jakeš
Člen | 177
+
0
-

Odstranění tagů – pletete tu dvě věci dohromady, ne? Původní příspěvek odstraňuje „texy tagy“, tzn. je to tip, jak z Texy zápisu dostat čistý text a je to rozhodně fajn tip. Na HTML tagy to funguje taky, ale to je tak trochu vedlejší efekt a pokud chceme odstranit HTML tagy, tak bych určitě použil strip_tags, Texy zde bude výkonově daleko náročnější.

Možná by bylo fajn tyhle věci v tom příspěvku upřesnit.

pawouk
Člen | 172
+
0
-

@Patrik Votoček o tom zda se vyhodi vyjimka nebo sablona rozhoduje pouze nastaveni $application->catchExceptions v bootstrapu, tedy pokud je nastaven na true vyhodi se vdzy sablona 404 a pokud je false vyhodi se vyjimka, neazalezi na to zda jste v produkcnim nebo vyvojovem rezimu.