SessionPanel – rozšíření pro debug bar
- Filip Procházka
- Moderator | 4668
Když do toho zapojíš tuhle funkci, tak se to třeba bude i dát používat ;)
- MW
- Člen | 626
Zdravím a prosim o pomoc,
Dostávám chybu:
Undefined variable: _SESSION
v SessionPanel.php Line: 69
Je to:
65: public function getPanel()
66: {
67: $template = $this->getFileTemplate(__DIR__ . DIRECTORY_SEPARATOR . 'templates' . DIRECTORY_SEPARATOR . 'panel.latte');
68: $template->session = $this->session;
69: $template->sessionMetaStore = $_SESSION['__NF']['META'];
70: $template->sessionMaxTime = ini_get('session.gc_maxlifetime');
71: $template->hiddenSections = $this->hiddenSections;
72: return $template;
73: }
NEON:
common:
php:
date.timezone: Europe/Prague
# zlib.output_compression: yes
# default_charset: "UTF-8"
nette:
database:
dsn: 'mysql:host=localhost;dbname=ikonis'
user: xxx
password: 'xxx'
reflection: Nette\Database\Reflection\ConventionalReflection
debugger:
strictMode: true
bar:
- @sessionPanel
services:
sessionPanel:
class: SessionPanel
arguments:
- @application
- @session
database: @nette.database.default
- MW
- Člen | 626
Session by mělo NETTE nastartovat automaticky…
Zkousel jsem i dle dokumentace ale bez
efektu…
Nebo jsem to delal blbe..
Nebo?
Diky
- enumag
- Člen | 2118
@MW: Jakou verzi session panelu používáš? Osobně doporučuji @HosipLanovu verzi (pouze pro Nette 2.1, kvůli BC breaku v Nette). Tahle verze by problém mít neměla.
- MW
- Člen | 626
enumag napsal(a):
@MW: Jakou verzi session panelu používáš? Osobně doporučuji @HosipLanovu verzi (pouze pro Nette 2.1, kvůli BC breaku v Nette). Tahle verze by problém mít neměla.
Mělo by stačit jen toto: ?
nette:
extensions:
debugger.session: Kdyby\Diagnostics\SessionPanel\SessionPanelExtension
Mam tedy Nette 2.0.5 :-(
Nezobrazuje nic.. chybu nehlasi.
Diky
- enumag
- Člen | 2118
Psal jsem, že to funguje jen pro verzi 2.1. A i tak by ta konfigurace
byla špatně, to nette:
tam nemá co dělat.
Na 2.0.x bys musel pár věcí v kódu upravit (minimálně revertnout tohle, možná ještě něco) a instalovat to v bootstrapu:
$configurator->onCompile[] = function ($configurator, $compiler) {
$compiler->addExtension('extensions', new \Kdyby\Diagnostics\SessionPanel\SessionPanelExtension);
};
Editoval enumag (20. 6. 2013 13:04)
- enumag
- Člen | 2118
Převzal jsem po Filipovi údržbo tohoto doplňku a dnes jsem i vyřešil kompatibilitu s Nette 2.0. Kompatibilita s aktuální verzí Nette dev-master je také zajištěna. Dokumentaci najdete na GitHubu.
- MW
- Člen | 626
enumag napsal(a):
@MW: Mohl bys zkusit tohle?
Nehlásí chybu, ale panel se neobjeví …
Moc díky.. zkusím tedy updatnout PHP..
- enumag
- Člen | 2118
@MW: Přes config to na 2.0 fungovat nemůže.
V bootstrapu pozor ať to je před voláním
$configurator->createContainer()
. Pak bych se v DebugBaru
podíval na výpis služeb zda tam je ten panel – pravděpodobně tam nebude
což by znamenalo že se Extension z nějakého důvodu nezaregistrovalo.
U mne tím důvodem byla cache.
Editoval enumag (16. 8. 2013 8:59)
- MW
- Člen | 626
Takovy mam bootstrap
<?php
//namespace IkonisModule;
use Nette\Diagnostics\Debugger, Nette\Environment, Nette\Application\Routers\SimpleRouter,
Nette\Application\Routers\Route, Nette\Forms\Container;
// Load Nette Framework or autoloader generated by Composer
require LIBS_DIR . '/autoload.php';
// Configure application
$configurator = new Nette\Config\Configurator;
// Enable Nette Debugger for error visualisation & logging
$configurator->setDebugMode(array("192.168.111.112"));
$configurator->enableDebugger(__DIR__ . '/../log');
// Enable RobotLoader - this will load all classes automatically
$configurator->setTempDirectory(__DIR__ . '/../temp');
$configurator->createRobotLoader()
->addDirectory(APP_DIR)
->addDirectory(LIBS_DIR)
->register();
// Create Dependency Injection container from config.neon file
$configurator->addConfig(__DIR__ . '/config.neon');
$container = $configurator->createContainer();
//Session bar
\Kdyby\SessionPanel\DI\SessionPanelExtension::register($configurator);
// Datepicker +
Container::extensionMethod('addDatePicker', function (Container $container, $name, $label = NULL) {
return $container[$name] = new JanTvrdik\Components\DatePicker($label);
});
Container::extensionMethod('addDependentSelectBox', 'DependentSelectBox\DependentSelectBox::formAddDependentSelectBox');
Container::extensionMethod('addTextCaptcha', array('\TextCaptcha\TextCaptcha', 'addTextCaptcha'));
// Setup application routes
$router = $container->application->getRouter();
$router[] = new Route('[index.php]', 'Ikonis:Pages:');
$router[] = new Route('<presenter>');
$router[] = new Route('<presenter>/<action>');
// Run the application!
$container->application->run();
pokud to dam před, hlasi to :
Cannot access static:: when no class scope is active
na
$compiler->addExtension('debugger.session', new static());
Editoval MW (16. 8. 2013 9:13)
- enumag
- Člen | 2118
Už je to týden zpátky, ale vydal jsem verzi 2.0. Tato verze je kompatibilní pouze s Nette 2.0 a je to tag na větvi nette-2.0. Veškeré známé bugy s instalací a staršímy verzemi PHP jsou již vychytané.
Instalovat doporučuji přes composer:
$ composer require kdyby/nette-session-panel:"~2.0"
Pro vývojovou verzi Nette použijte větev master. Tagovat budu až po vydání Nette 2.1 / 3.0.