Problem s vytvořením modelu
- pilif
- Člen | 8
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
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)
- Fanda
- Člen | 39
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ů…
- bojovyletoun
- Člen | 667
Nette\Diagnostics\Debugger::enable(Nette\Diagnostics\Debugger::DEVELOPMENT, $logdir);