Class ‚Tabella‘ not found

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

Ahoj, chci skusit v administraci možnost editace záznamů, ale nejdříve je musím vypsat..
zkoušel sem DataGrid, ale ten házel nějaké chyby a po opravení házel další..
zkusil sem Gridito, to sem sice rozběhal, ale nenašel sem k němu žádnou dokumentaci ani příklady.
a teď zkouším doplňek Tabella

stáhl jsem si zip a složku ‚Maite‘, která obsahuje Tabella.php jsem přejmenoval a přesunul do /app/components/Tabella kam mi odkazuje i RobotLoader

v /app/presenters/AdminPresenter.php mám

/* ------- Tabella ------- */

        protected function createComponentBasicTabella() {
            $grid = new Tabella( $this->novinky->getDataSource() );
            $grid->addColumn( "Id", "id", array( "width" => 30 ) );
            $grid->addColumn( "perex", "perex", array( "width" => 100 ) );
            $grid->addColumn( "text", "text", array( "width" => 100 ) );
            $grid->addColumn( 'datum vlozeni', 'datum_vlozeni', array( "type" => Tabella::DATETIME ) );
            return $grid;
        }

        /* ------- END Tabella ------- */

a v šabloně mám
{control basicTabella}

laděnka na řádku
$grid = new Tabella( $this->novinky->getDataSource() );

hodí Class ‚Tabella‘ not found [ obrazek ]

vypadá to na jednoduchou chybu, ale nemůžu na to přijít, děkuji ;)

Editoval muflix (13. 2. 2012 23:11)

nanuqcz
Člen | 822
+
0
-

Ahoj, a počítáš s tím, že ta třída je v namespace Maite? https://github.com/…/Tabella.php#L13

$grid = new Maite\Tabella( $this->novinky->getDataSource() );
muflix
Člen | 92
+
0
-

aha dík, no ještě mi to hází jednu chybu po opravení
mam /app/models/Novinky.php a v ní

private $db;

        public function __construct(\DibiConnection $connection)
        {
                $this->db = $connection;
        }

public function getDataSource()
        {
            return $this->db->dataSource('SELECT * FROM novinky');
        }

a píše mi to ‚Cannot use object of type DibiDataSource as array‘
nа řádku

$grid = new Tabella( $this->novinky->getDataSource() );

[ "obrazek ":http://ukaz.at/22i/full ]

v examplu je uvedený

class UsersModel extends Object {
        public static function dataSource() {
            return dibi::dataSource( "SELECT *, (daughters + sons) as children FROM users_test" );
        }

a

$grid = new Tabella( UsersModel::getDataSource() );

to mi příde podobný, ne li stejný ?

Editoval muflix (14. 2. 2012 8:56)

nanuqcz
Člen | 822
+
0
-

Stránka s doplňkem je asi zastaralá, na githubu se teď v example nepoužívá datasource, ale DibiFluent. Při vytváření Tabelly se pak zřejmě předávají parametry trochu jinak (v poli).

muflix
Člen | 92
+
0
-

dik, sem to opravil

/app/models/Novinky.php

public function source()
        {
            //return $this->db->dataSource('SELECT * FROM novinky');
            return $this->db->select('SQL_CALC_FOUND_ROWS *')->from('novinky');
        }

/app/presenters/AdminPresenter.php

protected function createComponentBasicTabella() {
            $grid = new Maite\Tabella( array(
                'context' => $this->context,
                'source' => $this->context->novinky->source()
                ) );
            $grid->addColumn( "Id", "id", array( "width" => 30 ) );
            $grid->addColumn( "perex", "perex", array( "width" => 100 ) );
            $grid->addColumn( "text", "text", array( "width" => 100 ) );
            $grid->addColumn( 'datum vlozeni', 'datum_vlozeni', array( "type" => Maite\Tabella::DATETIME ) );
            return $grid;
        }

ale vrací mi to chybu :P

Twista
Člen | 48
+
0
-

mas tam spatne sql dotaz,

zkusil bych do te source jeste pridat neco jako orderby(‚datum DESC‘) abys tak „vyrusil“ tu jejich ORDER BY NULL NULL

muflix
Člen | 92
+
0
-

Twista: zkusil jsem, ale nepomohlo to.. výsledný SQL vypadá takto:

SELECT SQL_CALC_FOUND_ROWS *
FROM `novinky`
ORDER BY datum_vlozeni DESC , NULL NULL
LIMIT NULL
OFFSET 0

Editoval muflix (14. 2. 2012 13:16)