Class Debugger Not Found hlásí laděnka

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

Předem prosím omluvte totálního newbieho.

Laděnka hlásí chybějící Debugger.

bootstrap.php

// Enable Nette Debugger for error visualisation & logging
Debugger::$logDirectory = __DIR__ . '/../log';
Debugger::$strictMode = TRUE;
Debugger::enable(Debugger::DEVELOPMENT);

a v presenteru mám

public function renderShow($args = array())
    {
	Debugger::dump($args);
    }

Nakopněte mě prosím někdo.

Díky.

hAssassin
Člen | 293
+
0
-

pouzivej !funkci! dump() a ono se to uvnitr nejak prelozi spravne :)

iguana007
Člen | 970
+
0
-

nepoužíváš náhodou 5.3 verzi, a chybí ti tam tak namespaces, kdežto v bootstrapu use uvedené máš?

jf71
Člen | 11
+
0
-

Díky za odpovědi.
Ano používám 5.3 verzi. Aha, takže v presenteru musím uvést use?

Jinak to dump only zabralo.

JuniorJR
Člen | 181
+
0
-

vypadá to, že s OOP začínáš, koukni sem

buď připiš někam (nejlépe) na začátek souboru

use \Nette\Diagnostics\Debugger; // EDIT - úvodní lomítko se prý nedoporučuje :)

a nebo pro každé volání laděnky použij volání třídy včetně namespace

public function renderShow($args = array())
{
    \Nette\Diagnostics\Debugger::dump($args);
}

hAssassin napsal(a):

pouzivej !funkci! dump() a ono se to uvnitr nejak prelozi spravne :)

viz. zdr. kód souboru loader.php, dokumentační poznámka hovoří za vše:

/**
 * Nette\Diagnostics\Debugger::dump shortcut.
 */
function dump($var)
{
    foreach (func_get_args() as $arg) Nette\Diagnostics\Debugger::dump($arg);
    return $var;
}

čili je to úplně nejjednodušší způsob, jak dumpovat

Editoval JuniorJR (15. 11. 2011 20:50)

Majkl578
Moderator | 1364
+
0
-

JuniorJR napsal(a):

buď připiš někam (nejlépe) na začátek souboru

use \Nette\Diagnostics\Debugger;

V use se před namespace nepíše \, protože postrádá smysl.

jf71
Člen | 11
+
0
-

Ještě jednou děkuji za odpovědi.
Jsme z toho teda lehce zmatenej. Po přidání use debugger funguje.

Ale mám asi podobnej problém: v app/models mám Record.php a v něm třídu RecordModel.

class RecordModel
{
	public static function fetchAll($country)
    	{
 	      	return dibi::query('SELECT * FROM ...');
	}
}

Když v RecordPresenter zavolám

$this->template->countries = RecordModel::fetchAll($c);

laděnka zahlásí Class ‚RecordModel‘ not found.. Zase mi chybí nějakej use?

Aurielle
Člen | 1281
+
0
-

\RecordModel, pokud nemá namespace. Pokud by byl RecordModel ve stejném namespace jako RecordPresenter, nemusíš žádné namespace či use uvádět a tak, jak jsi to napsal, to pojede.

edit: Texy má evidentně problémy s kódem ** \ ** (bez mezer)

Editoval gmvasek (15. 11. 2011 22:06)

jf71
Člen | 11
+
0
-

Furt mi to hlásí stejnou věc. Class RecordModel not found.

app/presenters/RecordPresenter.php

<?php
use Nette\Diagnostics\Debugger;

/**
 * Record presenter.
 *
 * @author     John Doe
 * @package    MyApplication
 */
class RecordPresenter extends BasePresenter
{

	public function renderDefault()
	{

	}

	public function actionShow($id,$b,$c)
    {

		Debugger::dump($id);

		$this->template->countries = \RecordModel::fetchAll($id,$b,$c);
		$this->template->tour = $c;

    }

    public function renderShow()
    {



    }
}

a app/models/Record.php

class RecordModel
{


	public static function fetchAll($country,$sex=2,$tour="tour")
    {



       	return dibi::query('SELECT * FROM ...);
    }

}

22
Člen | 1478
+
0
-

..smazal bych cache robotLoaderu v temp/cache slozce

jf71
Člen | 11
+
0
-

Ano, nakonec pomohlo smazání cache. Po přidání dalšího modelu jsem to muzel zopakovat. Čím to je?
Nevadí to, ale je to dost zvláštní a pro takové newbies jako já dost velká překážka.

22
Člen | 1478
+
0
-

to bude tim, ze mas nejaky zmatek v produkcnim a dev modu, pokud totiz je prostredi vyhodnoceno jako produkcni, nedochazi napriklad k refreshi robotLoader cache.

daliborcaja
Člen | 57
+
0
-

Pokud pro testování používáš normálí hosting a ne localhost svojeho pc tak doporučuji toto řešení:

// pole ip adres pro ktere je zapnuta ladenka
$devIps = array(
    '77.48.33.xxx' // dalibor
);
Debugger::$logDirectory = __DIR__ . '/../log';
Debugger::$strictMode = TRUE;
Debugger::enable($devIps);

// Load configuration from config.neon file
$configurator = new Configurator;
$configurator->container->params['productionMode'] = Debugger::$productionMode;
$configurator->loadConfig(NULL);

Takhle to upravíš v bootstrap.php a pak si jen do toho pole přidáš ip počítačů pro které má být zapnut development režim.

Editoval daliborcaja (16. 11. 2011 19:17)

jf71
Člen | 11
+
0
-

Díky za nasměrování! Vyzkouším to.