Problem s vytvořením modelu

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

Zdravím ve spolek,
včera jsem si stáhnul verzi 2.0 se jmennými prostory a pokouším se postupovat podle tutorialu.
Bohužel při vytvoření modelu končím s chybou „Server Error 500“. Laděnka vůbec v tomto případě nenaskočí.
V logu mám toto:
Nette\DI\MissingServiceException: Service ‚model‘ not found. in /var/www/other/finweb/libs/Nette/DI/Container.php:159

Pokud z presenteru vyhodím řádek „$this->model = $this->getService(‚model‘);“, tak mi úvodní stránka naběhne vpořádku.

Poradíte prosím v čem dělám chybu?
Díky

config.neon

common:
	parameters:
		database:
			driver: mysql
			host: 127.0.0.1
			dbname: db
			user: login
			password: xxx


	php:
		date.timezone: Europe/Prague
		# session.save_path: "%tempDir%/sessions"
		# zlib.output_compression: yes


	services:
		database:
			class: Nette\Database\Connection(
				'mysql:host=localhost;dbname=db'
				login
				xxx
			)
			setup:
				- setCacheStorage(...)
				#- setDatabaseReflection( Nette\Database\Reflection\DiscoveredReflection() )

		authenticator: Authenticator( @database::table(users) )


		model: Model( @database )

	factories:



production < common:

development < common:

models/Model.php

<?php
class Model extends Nette\Object
{
    /** @var Nette\Database\Connection */
    public $database;


    /**
     * @param Nette\Database\Connection $database
     */
    public function __construct(Nette\Database\Connection $database)
    {
        $this->database = $database;
    }

    public function getUsers() {
    	return $this->database->table('user');
    }

}

HomepagePresenter:

class HomepagePresenter extends BasePresenter
{
	/** @var Model */
	private $model;

	public function startup()
	{
	    parent::startup();
	    $this->model = $this->getService('model');
	}

	public function renderDefault()
	{

	}

}
Rellik
Člen | 104
+
0
-

Já teda nejsem žádný odborník na nette a taky začínám. Ale pokusím se poradit podle mého presenteru.
Já mám $model uvedený jako protected, jinak všechno ostatní mám víceméně stejně. Jen v modelu mám jiné funkce…

Tak to kdyžtak skus změnit na:

protected $model; // tady tento řádek

    public function startup() {
        parent::startup();
        $this->model = $this->getService('model');
    }

Jinak zkus ještě vymazat temp – to taky občas pomůže když něco nejde… ;-)

Editoval Rellik (10. 1. 2012 18:04)

pilif
Člen | 8
+
0
-

Hmm, tak bohužel, toto nepomohlo :(

pilif
Člen | 8
+
0
-

tak promazání tempu pomohlo. Proč?

Nox
Člen | 378
+
0
-

zkus nastavit u RobotLoaderu autoRebuild

Fanda
Člen | 39
+
0
-

pilif napsal(a):

tak promazání tempu pomohlo. Proč?

Jestli ti nenabíhá laděnka, nette detekuje produkční mód, ve kterém negeneruje pokaždé znovu cache. Pro vývoj si nastav aplikaci do development módu (zkus prostě jen přistupovat přes localhost…) https://doc.nette.org/cs/configuring#…. Potom nejen uvidíš laděnku, ale cache nebudeš muset mazat, aby se znovu vytvořila z aktuálních souborů…

pilif
Člen | 8
+
0
-

Development mód mám nastaven. Bohužel na localhostu nevyvíjím. Vše mám na virtuální mašině a z hosta na to pouze přistupji – Eclipse, SVN, web…

Fanda
Člen | 39
+
0
-

pilif napsal(a):

Development mód mám nastaven.

Jak?

bojovyletoun
Člen | 667
+
0
-

Nette\Diagnostics\Debugger::enable(Nette\Diagnostics\Debugger::DEVELOPMENT, $logdir);