Problém s chybějící třídou
- milde
- Člen | 52
Zdravím všechny a prosím o radu kde je chyba při hlášce Class
TydenModel not found prestože třída TydenModel existuje. Snažil
jsem se to najít zde na fóru, ale nějak se nezadařilo. Pro jistotu napíši
části zdrojáků.
config.neon
<?php
services:
robotLoader:
run: true
database:
class: Nette\Database\Connection
arguments: ['mysql:host=localhost;dbname=pokus', 'root', '']
model:
class: Model
arguments: [@database]
authenticator:
factory: [@model, createAuthenticatorService]
?>
TydenPresenter
<?php
class TydenPresenter extends BasePresenter
{
public function renderDefault(){
$this->template->tyden = TydenModel::fetchAll();
}
public function renderTyden($id){
if(!($tyden = TydenModel::fetchAll($id))){
.....
}
$this -> template -> tyden = $tyden;
}
}
?>
TydenModel
<?php
namespace Model;
use Nette\Object,
Nette\Enviroment,
Nette\Database\Connection;
class TydenModel extends BaseModel{
public function fetchAll($id){
return dibi::query('SELECT * FROM [tyden] WHERE [id] = %i', $id);
}
}
?>
Děkuji za každou radu.
- milde
- Člen | 52
Bertram napsal(a):
Zkus doplnit namespace
$this->template->tyden = Model\TydenModel::fetchAll();
Tak jsem to vyzkoušel a následuje, ale chybu to hlásí o kousek vyše – u podmínky „if“. Pakliže tam doplním namespace tak se objeví hláška Strict: Non-static method Model\TydenModel::fetchAll() should not be called statically, assuming $this from incompatible context :-(
- milde
- Člen | 52
Bertram napsal(a):
v renderTyden
$this -> template -> tydenId = $id;
Edit:
Ale jak se tak dívám tak to tam už máš v $tyden->id
Omlouvám se za ty opravy píšu z mobilu a ještě to nemám v krvi
Přiznám se, že jsem tě vůbec nepochopil :-( Proměnnou předávám, jen prostě nevím jak ji dostat do šablony a jak ji tam vypsat. Poradími, prosím, někdo? děkuji
- Petr Mašát
- Člen | 101
Ahoj,
tímto kódem
$this -> template -> tydenId = $id;
řekneš presenteru aby předal aktuální šabloně pod proměnou tydenId
tvoji hodnotu $id.
A Pak to už jen v šabloně vypíšeš pomocí
{$tydenId}
Jen si nejsem jist zda se ptáš přesně na toto : )
- milde
- Člen | 52
tachyon napsal(a):
Ahoj,
tímto kódem$this -> template -> tydenId = $id;
řekneš presenteru aby předal aktuální šabloně pod proměnou tydenId tvoji hodnotu $id.
A Pak to už jen v šabloně vypíšeš pomocí{$tydenId}
Jen si nejsem jist zda se ptáš přesně na toto : )
Ano to jsem měl na mysli, jen mi to stále hlásí nedefinovaná proměnná a nevím kde bych ji měl definovat – začínám s nette a je to tuhý boj:-(
- Petr Mašát
- Člen | 101
A máš tu definici proměný tydenId
v presenteru napsanou ve
správném pohledu jenž se právě používá na tuto šablonu?
- milde
- Člen | 52
tachyon napsal(a):
A máš tu definici proměný
tydenId
v presenteru napsanou ve správném pohledu jenž se právě používá na tuto šablonu?
nevím co přesně máš na mysli – asi jsem úplná lama. TydenPresenter mám následující:
<?php
class TydenPresenter extends BasePresenter
{
public $tydenId;
public function renderDefault(){
$this->template->tyden = TydenModel::fetchAll();
}
static public function renderTyden($id){
if(!($tyden = Model\TydenModel::fetchAll($id))){
...
}
$this -> template -> tydenId = $id;
}
}
?>
Editoval milde (16. 9. 2011 14:36)