jak zprovoznit Gridito (Class not found)

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

Dobrý den, rád bych zprovoznil Gridito, ale nedaří se mi.. (PHP 5.3, Nette 2.0)

mám presenter
app/AdminModule/presenters/InzeratyEditPresenter.php

<?php
namespace AdminModule;
use Nette\Application\AppForm;

class InzeratyEditPresenter extends \BasePresenter {




    protected function createComponentGrid($name){
        $grid = new Gridito\Grid($this, $name);

        $db = Nette\Environment::getService("DibiConnection");
        $grid->setModel(new Gridito\DibiFluentModel($db->select("*")->from("users")));

        $grid->setItemsPerPage(5);

        // columns
        $grid->addColumn("id", "ID")->setSortable(true);
        $grid->addColumn("username", "Username")->setSortable(true);
        $grid->addColumn("name", "Name")->setSortable(true);
        $grid->addColumn("surname", "Surname")->setSortable(true);
        $grid->addColumn("mail", "E-mail", array(
                "renderer" => function ($row) {
                    echo Nette\Web\Html::el("a")->href("mailto:$row->mail")->setText($row->mail);
                },
                "sortable" => true,
        ));
        $grid->addColumn("active", "Active", array(
                "renderer" => function ($row) {
                    Gridito\Column::renderBoolean($row->active);
                },
                "sortable" => true,
        ));
    }



}

a potom šablonu
app/AdminModule/templates/InzeratyEdit/default.latte

{block navigace}
<li><a href="{link InzeratyEdit:}">inzeráty</a></li>
{/block}
{block content}
editace inzeratu...
{control grid}

a aplikace mi píše
`
Fatal Error
Class ‚AdminModule\Gridito\Grid‘ not found
`

složku Gridito jsem zkopíroval nejdříve do
libs a poté do app/components ani v jednom úložišti se to nechytlo..

a druhá otázka, nejsem si jistý tím příkazem

$db = Nette\Environment::getService("DibiConnection");

stačí místo „DibiConnection“ dát db pokuď mám v bootstrap.php

; databaze
db.server = 127.0.0.1
db.database = inzeraty
db.username = root
db.password = 123456
db.driver = mysqli
db.charset = utf8
db.lazy = TRUE

? Děkuji a omlouvám se za hloupé otázky s Nette jsem se učil, ale teď jsem se tomu dlouho nevěnoval.

mkoubik
Člen | 728
+
0
-

Jsi v namespace AdminModule, takže buďto new \Gridito\Grid(...) nebo use \Gridito\Grid; a pak new Grid(...).

muflix
Člen | 92
+
0
-

Dík, už to funguje :) jen to píše teď chybu s tím připojením do databáze
`InvalidStateException
Service ‚db‘ not found.`

jinak jestli se ten Gridito bude nacházet ve složce libs nebo apps/components je asi díky RobotLoaderu jedno sem pochopil ?

marau
Člen | 50
+
0
-

Záleží pouze na tvé štábní kultuře, já komponenty jako Gridito apod. dávám do app/components/ a externí komponenty jako mpdf, facebook api apod. do libs.

muflix
Člen | 92
+
0
-

aha, to mi vyhovuje :) a nevíte ještě co s tím errorem InvalidStateException Service ‚db‘ not found. ? děkuji

marau
Člen | 50
+
0
-

Někde v kódu máš pravděpodobné volání <?php Nette\Environment::getService(„db“) ?> (například při připojování dibi) a v tvém config.ini (config.neon) nemáš tuto service vytvořenou.

muflix
Člen | 92
+
0
-

no mám tam

db.server = 127.0.0.1
db.database = inzeraty
db.username = root
db.password = 123456
db.driver = mysqli
db.charset = utf8
db.lazy = TRUE

takže tam ještě musím dát nějaký příkaz na vytvoření nějaké ‚service‘ ?
Já nevím co to znamená, resp v dokumentaci jsem to nenašel.

radikus
Člen | 11
+
0
-

Můžete sem prosím někdo hodit FUNKČNÍ kód z config.neon a BasePresenteru (případně další potřebné), jak vytváříte tu službu připojení k dibi pro Gridito?? Pro Nette 2.0 PHP 5.3 (namespace). Já dibi spouštím přímo v bootstrapu

<?php
// Load configuration from config.neon file
$configurator = new Nette\Configurator;
$configurator->container->params += $params;
$configurator->container->params['tempDir'] = __DIR__ . '/../temp';
$container = $configurator->loadConfig(__DIR__ . '/config.neon');

// dibi
dibi::connect($configurator->container->params['database']);
?>

takže nevím jak to vyřešit jinak.
Díky za pomoc.