Redirect v routeru při debug módu
- Petr Hanák
- Člen | 10
Ahoj,
mám vlastní router, některé požadavky chci přesměrovat jinam – např.
example.com na example.cz (detekce jazyků podle nastavení prohlížeče).
Zatím mám přesměrování řešené přes Nette\Http\Response, metodou redirect. Funguje to ale jen v případě production módu, dokud nezapnu debugbar. Přesměrování z presenteru $this->redirectUrl(…) proběhne v pořádku.
Problémy nejspíš dělá $container->enableDebugger(…), ale bez něj se mi zase nebudou logovat chyby.
Jak tedy správně přesměrovat z routeru, aby to fungovalo spolu s Tracy?
Díky
- Petr Hanák
- Člen | 10
pokud mám zaplý debug mód, tak se kód debugbaru odešle ještě před routováním, takže dostávám chybu
Possible problem: you are sending a HTTP header while already having some data in output buffer. Try OutputDebugger or start session earlier.
OutputDebugger jsem samozřejmě zkoušel, data se odesílají na již
zmiňovaném enableDebugger
.
- Michal Vyšinský
- Člen | 608
Ukaž kód, jak zapínáš ten debugger. (Možná celý bootstrap rovnou). Někde tam bude nějaká chyba…
- Petr Hanák
- Člen | 10
require ROOT_DIR . "/private/vendor/autoload.php";
$configurator = new Nette\Configurator;
$configurator->setDebugMode('1.2.3.4'); //development IP address
$configurator->enableDebugger(ROOT_DIR . "/private/log");
$configurator->setTempDirectory(ROOT_DIR . "/private/temp");
$configurator->createRobotLoader()
->addDirectory(ROOT_DIR . "/private/app")
->addDirectory(ROOT_DIR . "/private/vendor/others")
->register();
$configurator->addConfig(ROOT_DIR . "/private/app/system/config.neon");
$container = $configurator->createContainer();
return $container;
- Michal Vyšinský
- Člen | 608
Existuje složka /private/log? je zapisovatelná? Normální načtení stránky ti chybu neháže?
- Petr Hanák
- Člen | 10
normální zobrazení – tj. bez debugbaru je v pořádku
abych minimalizoval své chyby, tak jsem si vzal čistý sandbox a upravil pouze potřebné
bootstrap.php
...
$configurator = new Nette\Configurator;
$configurator->setDebugMode(TRUE);//povolený debug
$configurator->enableDebugger(__DIR__ . '/../log');
$configurator->setTempDirectory(__DIR__ . '/../temp');
...
RouterFactory.php
<?php
namespace App;
use Nette,
Nette\Http\Response;
class RouterFactory implements Nette\Application\IRouter
{
function match(Nette\Http\IRequest $httpRequest)
{
$r = new Response();
$r->redirect("http://google.com");
exit;
}
function constructUrl(Nette\Application\Request $appRequest, Nette\Http\Url $refUrl)
{
}
}
config.neon
...
services:
- App\Model\UserManager
router: App\RouterFactory
- Petr Hanák
- Člen | 10
chyba je nejspíš v souboru Tracy\templates\bar.phtml
vypisují se tam data mimo buffer – bug?