Rady, tipy a řešení problémů nejen pro Nette
- janpecha
- Backer | 75
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 …
- Příčina: Na začátku některého Vašeho souboru se nachází BOM sekvence
- řešení: odstraňte BOM sekvenci
- 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ů
- zavoláme
$texy->process($text);
- tím si Texy vytvoří DOM
- 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
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
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
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
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
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
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
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
@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.