Datagrid + session

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Oggy
Člen | 306
+
0
-

Mám malý trouble s Datagridem..

InvalidStateException

Cannot send session cache limiter – headers already sent

output started at /app/temp/c-Nette.Template/_450a6c4b6f0a30a3d81131e10438476b.%40layout.phtml.php:32)

presenter:

<?php
class Admin_WebStructurePresenter extends Admin_BasePresenter
{

    protected function createComponentWebStructureGrid()
    {
        $grid = new DataGrid;

        //sber dat
        $grid->bindDataTable(Sekce::getDataSource());
    }
}
?>

layout

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="{$lang}">
<head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta http-equiv="Content-Language" content="{$lang}" />

        <meta name="robots" content="noindex,nofollow" />

        <title>Administrace |  </title>
        {block #css}
            {control css 'reset.css', 'screen.css' }
        {/block}
        {block #js}
            {control smartJs 'jquery.js', 'jquery.nette.js'}
        {/block}
        <link rel="shortcut icon" href="{$baseUri}favicon.ico" type="image/x-icon" />
</head>

<body>
    {include #content}

</body>
</html>

sablona

{block #content}

{control webStructureGrid}
Honza Kuchař
Člen | 1662
+
0
-

Datagrid je ajaxový → použij zavináčkovou magii. Ale i tak by to nemělo vyhazovat, že hlavičky už byly odeslány…

P.S.: Důležitější než kde začal výstup je, kde se vyhodila výjimka.

Editoval honzakuchar (23. 11. 2009 10:26)

Oggy
Člen | 306
+
0
-

vyjímka:

File: /var/www/Nette-projekty/aerocentrum/front/libs/Nette/Web/Session.php Line: 115

Line 108: // ignore?
Line 109: }
Line 110:
Line 111: Tools::tryError();
Line 112: session_start();
Line 113: if (Tools::catchError($msg)) {
Line 114: @session_write_close(); // this is needed
Line 115: throw new InvalidStateException($msg);
Line 116: }
Line 117:
Line 118: self::$started = TRUE;
Line 119: if ($this->regenerationNeeded) {
Line 120: session_regenerate_id(TRUE);
Line 121: $this->regenerationNeeded = FALSE;
Line 122: }

Editoval Oggy (23. 11. 2009 11:08)

Honza Kuchař
Člen | 1662
+
0
-

mas session nastartovanou uz v bootstrapu? Nebo ve startupu presenteru?

lucass
Člen | 89
+
0
-

@oggy: S tímto jsem se také setkal. DataGrid má v konstruktoru podmínku, kde zjišťuje, zda session běží, a když ne, tak ji nastartuje. Jenže mezitím už něco mohlo být posláno na výstup. Zkus ji nastartovat v tom boostrapu, mělo by se to tím vyřešit (alespoň mně to pomohlo).

Editoval lucass (23. 11. 2009 14:44)

Oggy
Člen | 306
+
0
-

honzakuchar napsal(a):

mas session nastartovanou uz v bootstrapu? Nebo ve startupu presenteru?

Teď jsem to nastartoval v bootstrapu a rozběhlo se to..
Díky !