SessionPanel – rozšíření pro debug bar

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
2bfree
Člen | 248
+
0
-

Diskusní fórum pro doplněk SessionPanel do debugBaru.

Filip Procházka
Moderator | 4668
+
0
-

Když do toho zapojíš tuhle funkci, tak se to třeba bude i dát používat ;)

2bfree
Člen | 248
+
0
-

Funkce zapojena, jen jsem zapomněl aktualizovat screenshot. Opravím ;)

Morlok
Člen | 26
+
0
-

ten hideSection by kludne mohol podporovat regularne vyrazy, napr: Nette.*

2bfree
Člen | 248
+
0
-

Morlok napsal(a):

ten hideSection by kludne mohol podporovat regularne vyrazy, napr: Nette.*

Zkusím to zapracovat.

MW
Člen | 626
+
0
-

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
Glottis
Člen | 129
+
0
-

a kde mas definovane session v neonu? :)

MW
Člen | 626
+
0
-

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
+
0
-

@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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

Díky za update !
Zkouším a chytám toto:

enumag
Člen | 2118
+
0
-

@MW: Díky za report, zkusil jsem tam dát fix, ale nevím co máš za verzi Nette takže to neotestuju. Můžeš zkusit?

MW
Člen | 626
+
0
-

Mam 2.0.5.
Stahl jsem to cele, prehral, vymazal cache a stejna chyba :-(

Diky

enumag
Člen | 2118
+
0
-

@MW: Stáhl jsem si 2.0.5, ale nejsem schopen reprodukovat chybu.

EDIT: Pravděpodobně jde o tento PHP bug.

Editoval enumag (31. 7. 2013 16:49)

MW
Člen | 626
+
0
-

Pravdepodobne jo :/
Nejsem ale z toho moc moudry.. da se to nejak resit? mam PHP 5.3.4 ..

Jakou mas verzi PHP?

enumag
Člen | 2118
+
0
-

Dá se to řešit upgradem PHP na 5.3.7+ (ta tvá verze je už vážně prastará) nebo vytvářením těch aliasů přes eval + extends (což se mi popravdě moc nechce). Já používám PHP 5.4.12 (localhost) a 5.4.17 (VPS) což je ale celkem irelevantní.

Editoval enumag (31. 7. 2013 18:09)

enumag
Člen | 2118
+
0
-

@MW: Mohl bys zkusit tohle?

https://gist.github.com/enumag/6125849

MW
Člen | 626
+
0
-

enumag napsal(a):

@MW: Mohl bys zkusit tohle?

https://gist.github.com/enumag/6125849

Nehlásí chybu, ale panel se neobjeví …

Moc díky.. zkusím tedy updatnout PHP..

MW
Člen | 626
+
0
-

Updatnul jsem php na 5.3.13, chybu jiz nehlasi, ale panel nikde…

mam tuto puvodni verzi.

a bootstrapu:

//Session bar
Kdyby\SessionPanel\DI\SessionPanelExtension::register($configurator);

Díky

enumag
Člen | 2118
+
0
-

@MW: Bohužel jen s těmito informacemi netuším kde může být problém.

MW
Člen | 626
+
0
-

Nic to nehlasi.. tak jsem se chtěl jen zeptat, jestli jsi nezaznamenal nekde podobne chovani…
Jdu to zkusit krokovat …

Diky

enumag
Člen | 2118
+
0
-

@MW: Podařilo se mi to nasimulovat, v mém případě stačilo smazat cache. :-)

Editoval enumag (15. 8. 2013 23:02)

MW
Člen | 626
+
0
-

Cache jsem samo zkousel a nic.
Krokuju a chybu nevidim.
Zkousim i přes config místo bootstrapu, ale stejny výsledek.. :(

Budu asi dal dumpovat..

enumag
Člen | 2118
+
0
-

@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
+
0
-

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
+
0
-

Dej to před to. Ta chybová hláška se static bude asi zase nějakej PHP bug kterej je v 5.4 fixnutej, zkus pls novou verzi SessionPanelu.

Editoval enumag (16. 8. 2013 9:26)

MW
Člen | 626
+
0
-

Super… diky !

enumag
Člen | 2118
+
0
-

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.