Using $this when not in object context
- batko
- Člen | 219
ahoj,
na řádku $count = $this->basket->getBasketItem($itemId)->fetch();
mi to hází chybu
Using $this when not in object context
na localhostu to nedělá a na hostingu ano. Vím že to souvisí nejak s tím že $this není možno použít v anonimních funkcích… ale neznám řešení.
Děkuji
<?php
public function createComponentShopForm() {
return new Nette\Application\UI\Multiplier(function ($itemId) {
$count = $this->basket->getBasketItem($itemId)->fetch();
$form = new Nette\Application\UI\Form;
$form->addText('count', 'Počet zboží:')
->setAttribute("size", 3)
->addRule($form::FILLED)
->addRule($form::INTEGER)->setValue($count->count);
$form->addHidden('id', $count->product->id);
$form->addSubmit('send', 'Aktualizovat');
$form->onSuccess[] = $this->changeCount;
return $form;
});
}
?>
- David Matějka
- Moderator | 6445
$this muzes v anonymni fci pouzit od php 5.4;
pouzij tohle:
public function createComponentShopForm() {
$self = $this;
return new Nette\Application\UI\Multiplier(function ($itemId) use($self){
$self->basket...
- batko
- Člen | 219
matej21 napsal(a):
$this muzes v anonymni fci pouzit od php 5.4;
pouzij tohle:public function createComponentShopForm() { $self = $this; return new Nette\Application\UI\Multiplier(function ($itemId) use($self){ $self->basket...
hazi chybu
Undefined variable: this
přitom na localu mi to jede normálně…
Editoval batko (4. 9. 2013 21:31)
- David Matějka
- Moderator | 6445
jako na tomhle
$self = $this;
radku? to snad ne… vymenil jsi VSECHNY $this v anonymni fci za $self?
- batko
- Člen | 219
matej21 napsal(a):
jako na tomhle
$self = $this;
radku? to snad ne… vymenil jsi VSECHNY $this v anonymni fci za $self?
<?php
public function createComponentShopForm() {
$self = $this;
return new Nette\Application\UI\Multiplier(function ($itemId) use($self) {
$count = $self->basket->getBasketItem($itemId)->fetch();
$form = new Nette\Application\UI\Form;
$form->addText('count', 'Počet zboží:')
->setAttribute("size", 3)
->addRule($form::FILLED)
->addRule($form::INTEGER)->setValue($count->count);
$form->addHidden('id', $count->product->id);
$form->addSubmit('send', 'Aktualizovat');
$form->onSuccess[] = $self->changeCount;
return $form;
});
}
?>
ano laděnka označuje tento řádek
$self = $this;
- David Matějka
- Moderator | 6445
uloz html a nekam ho uploadni; to, ze je to uvnitr komponenty, nema vliv
- David Matějka
- Moderator | 6445
return new Nette\Application\UI\Multiplier(function ($itemId) {
$self = $this;
zrovna neni to, co jsem psal :)
viz:
public function createComponentShopForm() {
$self = $this;
return new Nette\Application\UI\Multiplier(function ($itemId) use($self){
to $self = $this
musis mit pred anonymni fci + tam musis
dat use($self)