Possible problem: you are starting session while already having some data in output buffer*
- duskohu
- Člen | 778
Caute, neviete mi poradit? Mam komponentu ShoppingCartBlock ktora si vola service ShoppingCart pri nacitani stranky, problem je v tom ze ked v render zavolam service ShoppingCart ktora by mala vyrobit session pokial este neexistuje,tak mi vypise error:
Possible problem: you are starting session while already having some data in output buffer. This may not work if the outputted data grows. Try starting the session earlier.
pokial urobim dalsi refresh tak uz to funguje, neviete mi poradit ako toto riesit?
komponenta: ShoppingCartBlock
class ShoppingCartBlockControl extends BaseControl
{
private $shoppingCart;
/**
* @param ShoppingCart $shoppingCart
*/
public function __construct(ShoppingCart $shoppingCart)
{
parent::__construct();
$this->shoppingCart = $shoppingCart;
}
public function render()
{
$shoppingCart = $this->shoppingCart->getItems();
$this->template->shoppingCart = $shoppingCart ;
$this->template->render();
}
}
a service:
class ShoppingCart extends Nette\Object {
/** @var Nette\Http\SessionSection */
private $cart;
public function __construct(Nette\Http\Session $session) {
$this->cart = $session->getSection(__CLASS__);
}
public function getItems() {
return $this->cart->getIterator()->getArrayCopy();
}
}
- duskohu
- Člen | 778
@norbe dik toto pomohlo, nastavoval som to podla dokumentacie, ale to bola asi chyba :-)
- enumag
- Člen | 2118
@duskohu: Problém je v tom že se ta služba vytváří až během renderování, kdy už session nejde nastartovat. Osobně autostart:true nemám rád, protože to vytváří session i nepřihlášeným uživatelům (úplně zbytečně). Lepší mi připadá sáhnout si na tu komponentu v beforeRender:
public function beforeRender() {
// start session if needed
$this['shoppingCartBlock'];
}
Editoval enumag (2. 5. 2013 11:01)
- duskohu
- Člen | 778
@enumag dakujem, toto sa mi zda cistejsie :-), samozrejme musim v komponente shoppingCartBlock pouzit attached a tam nacitat data so service ShoppingCart.
Edit: inak tato komponenta sa vytvara na kazdej stranke takze session potrebujem stale.
Editoval duskohu (2. 5. 2013 11:38)
- o5
- Člen | 416
Updatoval jsem z 2.1@dev (10.12.2013) na 2.2@dev (17.12.2013). Dostal jsem stejnou chybu jako v tomto vlákně. Problém jsem zjistil, když jsem přepnul laděnku pomocí ESC. Spatřil jsem totiž lépe vypovídající chybovou hlášku:
Class Nette\Config\Configurator has been renamed to Nette\Configurator.
Mohlo by se někomu hodit…