2 moduly v jednom presenteru
- masterr
- Začátečník | 141
Fatal Error
Call to a member function uploadimg() on a non-object
function addgoodsFormSubmitted($form)
{
if($form['ok']->isSubmittedBy()) {
$this->flashMessage('Zboží přidáno.');
$values = $form->getValues();
$goods = new Goods;
// $image->save('/document_root/upload/');
$this->model->createGoods($goods);
**$file = new FileManager();
$this->file->uploadimg("goods",144,$values['count_img']);**
}
$this->redirect(':Admin:goods:');
}
public function getModel() {
if(!isset($this->goods))
$this->goods = new Goods;
return $this->goods;
}
Potřebuji použít dva modely v 1 presenteru a nwm jak na to.
Editoval masterr (4. 10. 2010 15:18)
- masterr
- Začátečník | 141
Omlouvám se,
myslím modely. Nadpis zřejmě nejde editovat, že?
Jedná se o to, že potřebuji použít dva modely, ale nwm jak říct, tenhle model použij proto a tenhle pro to druhé.
$file = new FileManager();
$this->file->uploadimg("goods",144,$values['count_img']);
Dá se to tak to použít?
Editoval masterr (4. 10. 2010 17:32)
- westrem
- Člen | 398
Preco volas $this->file-> ..
ked predtym mas ocividne iba
instancovanie premennej a nikde to do tej $this->file
nepriradujes. Chcel si tam teda
napisat: $file->uploadimg( .. )
Pripadne ak to chces na ten styl ako to je v ukazkovom priklade v distribucii (kde prave tento model je nestastne vysvetleny) tak takto:
// funkcia v presenteru
public function getFile() {
if(empty($this->file))
$this->file = new FileManager;
return $this->file;
}
//pouzitie vo vnutri nejakej funkcie presenteru
$this->file->uploadimg(' .. ')
- masterr
- Začátečník | 141
Dík, už chápu jak to funguje.
Edit:
$this->model->createGoods($goods);
$this->file->uploadimg("goods",144,$values['count_img']);
}
$this->redirect(':Admin:goods:');
}
public function getFile() {
if(empty($this->file))
$this->file = new FileManager;
return $this->file;
}
public function getModel() {
if(!isset($this->goods))
$this->goods = new Goods;
return $this->goods;
}
Když to mám takto tak to stale hazi tu chybu, ale když to napíšu
$file->uploadimg("goods",144,$values['sklad']);
tak to beží, čim to je?
Editoval masterr (4. 10. 2010 17:55)
- westrem
- Člen | 398
Ach, ospravedlnujem sa, trochu som mystifikoval v mojom predoslom prispevku. V zhone som si neuvedomil jednu zasadnu vec. Prepis to teda takto:
// toto bude v presenteri
private $file;
public function startup()
{
parent::startup();
$this->file = new FileManager();
}
Dalej zmaz funkciu getFile()
teraz je uz nepotrebna. V kode by
ti uz potom malo normalne fungovat
$this->file->uploadimg
.
- westrem
- Člen | 398
Pretoze ked som to pisal vtedy tak som prilis premyslal nad properties v Nette (kedze akurat ten thread som docital) a neuvedomil som si plne, ze sme v kontexte presenteru, ktory v podstate nikdy nebudes brat ako externu triedu.
Problem pri tom co som napisal v 1. prispevku je ten, ze pri volani:
$this->file->..
sa nezavola getter getFile()
pretoze si vo vnutri triedy a teda
property file
je viditelna. Ak chces vediet nieco viac, nastuduj si
jednak Magic Methods v PHP a tiez ako funguje Nette\Object
Ad zvyraznovanie:
Na fore funguje Texy! syntax, to mas predsa napisane hned nad textareou, kde
pises prispevok. Na formatovanie kodu pouzivaj zapis, ktory je uverejneny v Podrobnej syntaxi
v sekcii „Kod“