Missing argument 1 for …
- milan
- Člen | 24
Zdravím, nevím v čem jse zakopaný pes a proto bych Vás rád požádal
o radu. Raději sem rovnou přiložím inkriminované soubory:
AdministracePresenter:
<?php
use Nette\Application\UI\Control;
use \AdministraceModel;
class AdministracePresenter extends AdminPresenter{
private static $AdministraceModel;
public function beforeRender()
{ }
protected function getAdministraceModel()
{
if (self::$AdministraceModel === NULL) {
self::$AdministraceModel = new \Model\AdministraceModel();
}
return self::$AdministraceModel;
}
public function createComponentTestWysiwyg()
{
$form = new Nette\Application\UI\Form();
$form->onSuccess[] = callback($this, 'testWysiwyg_onSuccess');
$form->addTextArea('text', 'Text')->getControlPrototype()->class('mceEditor');
$form -> addSubmit('save', 'Uloz');
return $form;
}
public function testWysiwyg_onSuccess(Nette\Application\UI\Form $form)
{
$values = $form->getValues();
$this->getAdministraceModel()->save(array('text' => $values['text']));
$this->flashMessage('Text uložen ...');
$this->redirect('Administrace:test');
}
}
?>
AdministraceModel:
<?php
namespace Model;
use Nette\Object,
Nette\Enviroment,
Nette\Database\Connection;
use \dibi;
class AdministraceModel extends BaseModel
{
public function __construct($database)
{
parent::__construct($database);
}
public function save(array $data)
{
if (!isset($data['id']) || $data['id'] == NULL) {
$this->insert($data);
} else {
$this->update($data, array('id' => $data['id']));
}
}
}
?>
a problém je, že mi to hlásí Missing argument 1 for Model\AdministraceModel::__construct(), called in C:\xampp\htdocs\A\app\AdminModule\presenters\AdministracePresenter.php on line 30 and defined. Mohu Vás požádat o radu co dělám špatně? Děkuji
- Claudie1
- Člen | 21
vytáříš nový objekt v jehož konstruktoru máš předepsaný parametr
$database
viz:
public function __construct($database)
je tedy třeba ten parametr uvést při vytváření modelu do závorek, které máš teď prázdné:
self::$AdministraceModel = new \Model\AdministraceModel($database)
v $database by mělo být to připojení
- bojovyletoun
- Člen | 667
to getdatabaseModel je ukázka tfujsingletonu. Ještě do toho motat self… ještě, že to nečetl Hosiplan. Přečti si něco zde
Po úpravě ti zbyde v presenteru jedoduchý kod: místo
$this->getAdministraceModel()
stačí budeš volat
$this->context->administracnisluzba
, (pozn: nebrání ti nic
si tohle vložit do oné funkce getadmi…)
přičemž význam bude takový, že se tím dotazuješ na službu. Tu službu
si můžeš definovat v config.neon. Přičemž ta služba bude při své
tvorbě brát jako další parametr další službu, což bude připojení.
Letmo jsem se podíval sem ,to je asi ono.
Editoval bojovyletoun (25. 11. 2011 18:21)