Problém s updatem (Call to a member function of a non-object)
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Frozen
- Člen | 19
Dobrý den.
Nette zkouším asi týden, resp. celé OOP.
Quickstart jsem prolétl…
Zkouším si vyvořit webík, ale narazil jsem na problém kdy chci updatovat
položku v DB a hází mi to chybu:
Call to a member function getOptions() on a non-object
vcelku nechápu proč…
v modelu jsem si vytvořil:
public function getOptions(){
return $this->database->table('nastaveni');
}
a v EditPresenteru mám toto..
public function barvyFormSubmitted(Form $form)
{
$this->model->getOptions()->where(array('id' => $user->id))->update(array(
//'obsah_barva' => hex2rgb($form->values->obsah_barva),
'obsah_alfa' => $form->values->obsah_alfa
));
//$this->redirect('this');
}
Dělal jsem to na základě předlohy tohoto dotazu:
$this->model->getTasks()->where(array('id' => $taskId))->update(array('done' => 1));
Můžete mě nějak nakopnout proč tomu tak je?
Předem děkuji za reakci
- Frozen
- Člen | 19
Ano.
Zde je Model.php
class Model extends Nette\Object {
public $database;
public function __construct(Nette\Database\Connection $database){
$this->database = $database;
}
public function getManagers(){
return $this->database->table('manager');
}
public function getStadions(){
return $this->database->table('stadion');
}
public function getTeams(){
return $this->database->table('team');
}
public function getOptions(){
return $this->database->table('nastaveni');
}
}
a zde je EditPresenter.php
use Nette\Application\UI\Form;
/**
* Homepage presenter.
*
* @author John Doe
* @package MyApplication
*/
class EditPresenter extends TeamPresenter
{
public $model;
public function startup(){
parent::startup();
$id = $this->getParameter('id');
$user = $this->getUser();
if($user->id == $id){
}else{
$this->redirect('Edit:default', $user->id);
}
}
public function actionObrazky($id){
}
public function actionBarvy($id){
}
protected function createComponentBarvyForm()
{
$form = new Form();
$form->addText('obsah_barva', 'Pozadí obsahu:', 20, 6)
->setHtmlId('colorpickerField1');
$form->addText('obsah_alfa', 'Průhlednost obsahu:', 2, 2);
$form->addText('pismo_obsah_barva', 'Brava písma obsahu:', 20, 6)
->setHtmlId('colorpickerField2');
/* $form->addSelect('userId', 'Pro:', $this->model->getUsers()->fetchPairs('id', 'name'))
->setPrompt('- Vyberte -')
->addRule(Form::FILLED, 'Je nutné vybrat, komu je úkol přiřazen.');*/
$form->addSubmit('create', 'Vytvořit');
$form->onSuccess[] = callback($this, 'barvyFormSubmitted');
return $form;
}
public function barvyFormSubmitted(Form $form)
{
/* $this->model->getTasks()->insert(array(
'text' => $form->values->text,
'user_id' => $form->values->userId,
'created' => new DateTime(),
'tasklist_id' => $this->taskList->id
));
*
$this->flashMessage('Úkol přidán.');*/
// FUNKCE PRO PŘEVOD BARVY Z hex DO RGB
function hex2rgb($hex) {
if (strlen($hex)==3) $hex=$hex[0].$hex[0].$hex[1].$hex[1].$hex[2].$hex[2];
elseif (strlen($hex)!=6) return false;
$rgb=array();
$rgb[0] = hexdec(substr($hex,0,2)); // red
$rgb[1] = hexdec(substr($hex,2,2)); // green
$rgb[2] = hexdec(substr($hex,4,2)); // blue
$barvicka = "rgb(".$rgb[0].",".$rgb[1].",".$rgb[2].")";
return $barvicka;
}
$this->model->getOptions()->where(array('id' => $user->id))->update(array(
//'obsah_barva' => hex2rgb($form->values->obsah_barva),
'obsah_alfa' => $form->values->obsah_alfa
));
//$this->redirect('this');
}
}