Grido – DataGrid pro Nette
- o5
- Člen | 416
Jak si asi koukal, v \Grido\DataSources\DibiFluent se to řeší „dibi-standartně“ takto a abych pravdu řekl, nevím jak to řešit elegantně jinak.
EDIT: ještě něco k tématu: http://sql-cross-queries.freexit.eu/dibifluent#1
Editoval o5 (26. 2. 2013 14:59)
- JakubJarabica
- Gold Partner | 184
o5:
Pri jednoduchých fluentoch alebo pri zložitejších ak si z nich urobíš
view by to mohlo byť takto:
<?php
$fluent = clone $this->fluent;
return $fluent->removeClause('select')->select('COUNT(*)')->fetchSingle();
?>
- JakubJarabica
- Gold Partner | 184
Ono to riešenie ale (aspoň myslím, už mi to teraz veľmi nepáli) nie je univerzálne bez viewu(s viewom je v 100% prípadoch funkčné). Ked v selecte budeš mať nejaký alias(YEAR(date) as rok), podľa ktorého aj budeš filtrovať(WHERE rok = 2012) a následne jeho select klauzulu odstrániš, tak where podmienka bude zlyhávať kvôli neexistujúcemu stĺpcu…? To len FYI, keď už to je v repozitári.
- o5
- Člen | 416
xxxmisko napsal(a):
Ahojte páni!
V nette začínam, chcel som pridať túto komponentu do svojho testovacieho projektu, avšak vôbec mi to nejde. Prosím nenájde sa niekto, kto zavesí funkčnú verziu tohto gridu niekde na server? Aby som videl, ako to funguje, example z gitbub mi nefunguje :(Ďakujem za každú pomoc
Co znamena nejde?
EDIT: predpokladam, ze vlozit Nette a dibi do slozky libs si udelal…
Editoval o5 (6. 3. 2013 14:07)
- o5
- Člen | 416
xxxmisko napsal(a):
kurňa, som úplna lama, stiahol som toto:
https://github.com/…rido-sandboxpridal som do libs najnovší nette, dibi.
Predtým mi nehádzal žiadnu chybu, teraz mi ladenka ukazuje: DibiNotSupportedExceptionPHP extension ‚sqlite3‘ is not loaded.
config.neon som nechal ten pôvodný, pričom aj db je tam tá origo.
@xxxmisko: http://bit.ly/Zb8CUi. Řešme zde prosím věci týkající se přímo komponenty!
Editoval o5 (7. 3. 2013 9:39)
- xxxmisko
- Člen | 140
Chlapi, už sa mi to podarilo rozbehať aj na mojej postgres databáze, je to super doplnok. Chcel by som sa ale opýtať, ako jednoducho riešite editáciu a pridávanie nových záznamov? Políčko na editáciu vidím pripravené, ale zobrazí sa flash správička, teda to spravím asi cez nejaký formulár, ak zistím ako na modal, tak modálny formulár :D. Chýba mi pridávanie nových riadkov a bol by som rád, kedy ste mi dali návrh, ako to vyriešiť, ak ste to riešili.
PS: Veľmi pekný komponent.
- xxxmisko
- Člen | 140
Ahojte chlapi, znova som tu :(
Vyrobil som si testovaciu tabuľku, kde som spolij 4 tabuľky, našepkávač
funguje iba na stĺpcoch prvej tabuľky. Prosím o nasmerovanie, ako rozbehať
filtrovanie napr na miestnosti.
Skúšal som setColumn(‚M.nazov‘), ale dostal som chybu
Undefined property: DibiRow::$M.nazov
File: …\libs\Grido\Components\Columns\Column.php Line: 274
protected function getValue($row)
272: {
273: $column = $this->getColumn();
274: return $row->$column;
275: }
kod spajania tabuliek
<?php
$fluent = dibi::select('Z.*, F.nazov as funkcia, M.cislo as miestnost_cislo, M.nazov as miestnost_nazov, O.nazov as oddelenie_nazov')
->from('zamestnanec Z')
->leftJoin('funkcia F')->on('Z.funkcia_id = F.id')
->leftJoin('miestnost M')->on('Z.miestnost_id= M.id')
->leftJoin('oddelenie O')->on('Z.oddelenie_id = O.id');
$grid->setModel($fluent);
?>
- xxxmisko
- Člen | 140
ešte taká vec, keď chcem sortovať, postgres odo mňa chce pridať klauzulu GROUP BY pred ORDER BY. Neviem zistiť, kde sa generuje dotaz, aby som si pozrel, ako sa vyskladal. Ladenka mi moc nepomáha, pole pre order by som si pridal do grid.php, ale stále mi to nechce nejako ísť.
Takže otázka, kde si viem pozrieť vygenerovaný SQL dotaz, aby som si ho mohol nechať zobraziť? Ďakujem
- xxxmisko
- Člen | 140
Chlapi, zmenil som trošku funkciu getData v Grid.php, prehodil som riadky applySorting a applyPaging a postgres už funguje normálne. Ďakujem za žiadne rady, tu je funkcia, keby mal niekto podobný problém
<?php
public function getData($applyPaging = TRUE)
{
if ($this->model === NULL) {
throw new \Exception('Model cannot be empty, please use method $grid->setModel().');
}
if ($this->data === NULL) {
$this->applyFiltering();
if ($applyPaging) {
$this->applyPaging();
}
$this->applySorting();
$this->data = $this->model->data;
if ($this->onFetchData) {
$this->onFetchData($this);
}
}
return $this->data;
}
?>
- o5
- Člen | 416
o5 napsal(a):
Tento fork umi Doctrine. V dohledne dobe planuji zmergovat do mastera.
Editoval o5 (10. 3. 2013 16:36)
- o5
- Člen | 416
o5 napsal(a):
To jsem si dobře naběhnul :)) No, asi to tam nechám, ale přidám možnost ovlivnit to callbackem.
- illagrenan
- Člen | 12
Předně díky za doplněk. Nedaří se mi jeho zprovoznění přes
Composer – v composer.json
mám
"o5/grido": "dev-master"
a po instalaci se vytvoří struktura:
o5\grido\Grido\...
. Na to nette vrací
Class 'Grido\Grid' not found
.
Na GITu je podle mě aktuální composer.json správně, ale balíček na Packagistu hlásí, že byl aktualizován 2013–02–26 21:29.
//EDIT
Stažený composer.json přes packagist má v sobě stále:
"autoload": {
"psr-0": { "Grido": "libs/" }
}
Editoval illagrenan (11. 3. 2013 17:48)
- xxxmisko
- Člen | 140
Ahoj chlapi, som tu znova.
Mám problém, teda neviem sa vysomáriť v redirecte vo funkcii
gridOperationsHandler.
$this->redirect($operation, array(‚id‘ ⇒ $id));
mi hádže chybu
rawurldecode() expects parameter 1 to be string, array given
na hentom riadku. Routy mám nastavené takto:
$container->router[] = new Route(‚index.php‘, ‚Homepage:default‘,
Route::ONE_WAY);
$container->router[] = new
Route(‚<presenter>/<action>[/<id>]‘,
‚Homepage:default‘);
Keď som nastavil redirect, pričom ako id som poslal string, tak zbehlo, ale
do požadovanej funkcie sa nič neprenieslo :(
Prosím o pomoc, ďakujem pekne za každú radu
- gliny
- Člen | 25
Ale teď už zpátky k Gridu.
Rozjel jsem zaklad, načítám data pomocí Nette database, ale pár věcí mi nejde. Ve sloupci akce zatím nemám žádné tlačítka.
- Tlačítko export
Nevím, jestli se k němu nemá napsat nějaká action, ale spíš asi ne,
ani v examplu co jsem stáhl nic nebylo (ten jsem nerozjížděl).
vyhodí
Warning- Illegal offset type in isset or empty
File: …/libs/Grido/Components/Columns/Column.php
279: return isset($this->replacements[$value])
Podle té chyby bych řekl že očekává nějakou hodnotu ale nic tam není, vyhazuje to metoda applyReplacement, ale co by chtěla nahradit :P
- Zdroj dat
Potřeboval bych jako zdroj dat objekty (entity) který jsem vytvořil. Grido žere array, nebo entity? To se mi nepodařilo z dokumentace vyčíst.
Nette 2.0.8 + PHP 5.4
Snad někdo budete vědět :)
Editoval gliny (13. 3. 2013 16:55)
- o5
- Člen | 416
gliny napsal(a):
Snad někdo budete vědět :)
Já nerozumím, protože asi neumím česky.
EDIT:
- Budeš muset uvést příklad. Jinak to demo je od včerejška možné zprovoznit pomocí Composeru a je to otázka dvou commandů
composer create-project o5/grido-sandbox:dev-master
chmod 777 grido-sandbox/temp
- Grido v současné době podporuje DibiFluent, NetteDatabase, Doctrine
Editoval o5 (13. 3. 2013 18:18)
- gliny
- Člen | 25
Ahoj
composer jsem k zavedení do projektu nepoužil, tak snad jsem nic
neopomněl, ale myslím že ne.
zdroj je Nette database
Nette 2.0.8 + PHP 5.4
1. Tak takhle vytvářím Grid, a tuhle chybu to hází při kliku na export.
protected function createComponentFakturyGrid($name)
{
$tasks = $this->taskRepository->findAllTasks();
$grid = new Grid($this, $name);
$grid->setModel($tasks);
$grid->addColumn('created', 'Vytvoreno', Column::TYPE_DATE)
->setDateFormat(Grido\Components\Columns\Date::FORMAT_DATE)
->setSortable()
->setFilter(Filter::TYPE_DATE)
->setCondition(Filter::CONDITION_CALLBACK, callback($this, 'gridBirthdayFilterCondition'));
$grid->getColumn('created')->cellPrototype->class[] = 'center';
$grid->addColumn('text', 'Text')->setSortable();
$grid->addColumn('user', 'Vytvoril')
->setSortable();
//->setColumn('user->name');
$grid->setFilterRenderType($this->filterRenderType);
$grid->setExporting();
$grid->translator->setLang('cs');
return $grid;
}
2. Bylo by složité upravit grid aby vypisoval třeba array (nebo objekt)? Jdu se na tu možnost mrknout. Teoreticky bych mohl použít jiný grid, ale líbí se mi export do csv, který chci, tak možná bude jednodušší si ho dodělat u jiého gridu, pokud tohle bude nereálné.
3. Nevím jestli je to fičura nebo bug, ale když zapíšu
$grid->addColumn('user->name', 'Vytvoril')
tak to nefunguje, přes samotné database to funguje. Tabulky jsou stejne
jako zde
mám pocit že jsem někde zahlédl dotaz na tohle téma, ale je možné že to
bylo u jiného gridu.
Díky za odpověd :) Doufám že už je to více česky ;)
Editoval gliny (13. 3. 2013 19:13)
- o5
- Člen | 416
- to je bug
- zdrojem může být teoreticky cokoli, stačí aby ten zdroj implementoval Grido\DataSources\IDataSource však se podívej na implementace zdrojů, třeba DibiFluent
- takto to nefunguje, název musí být alphanumerický řetězec stejně jako třeba u formulářů. Mohlo by to jít přes setColumn() , jinak přes vlastní vykreslení pomocí setCustomRender() viz třeba v examplu.
Editoval o5 (22. 3. 2013 13:21)
- o5
- Člen | 416
To teda seš otravný!
Ne dělám si srandu, díky za report! Přidal jsem tam možnost nastavit db column přes callback, který by to měl řešit. Pokud se tedy použije NetteDatabase a v exportu se chce použít najoinovaný sloupec, je nutné něco v tomto smyslu:
$grid->addColumn('country', 'Country')
->setColumn(function($item){
return $item->country->title;
})
Ještě je tam potřeba vymyslet nějaké šikovnější upozornění (teď pokud se to nenastaví, háže to stejnou chybu), to si ale nechám na jindy..
- cafesk8
- Člen | 103
Zdravím,
můžete mi někdo poradit jak to rozběhnout, nebo případně mi říct, že se snažím o naprostou blbost?
ArticlesPresenter.php
<?php
namespace AdminModule;
class ArticlesPresenter extends BasePresenter {
private $articlesRepository;
public function inject(ArticlesRepository $articlesRepository) {
$this->articlesRepository = $articlesRepository;
}
public function createComponentArticles() {
return new ArticlesControl($this->articlesRepository->findAll(), $this->articlesRepository);
}
}
?>
Articles.php
<?php
namespace AdminModule;
class ArticlesControl extends Nette\Application\UI\Control {
private $articles;
private $articlesRepository;
public function __construct(Nette\Database\Table\Selection $articles, ArticlesRepository $articlesRepository) {
parent::__construct(); // vždy je potřeba volat rodičovský konstruktor
$this->articles = $articles;
$this->articlesRepository = $articlesRepository;
}
protected function createComponentArticlesGrid($name) {
$grid = new \Grido\Grid($this, $name);
$grid->setModel($this->articles);
$grid->addColumn('heading', 'Nadpis', Column::TYPE_TEXT);
return $grid;
}
public function render() {
$this->template->setFile(__DIR__ . '/templates/Articles.latte');
$this->template->render();
}
}
?>
Articles.latte
<?php
{control articlesGrid}
?>
Laděnka řve Class ‚AdminModule\Column‘ not found, je mi jasné, že to je tím, že jsem v namespace AdminModule, ale nevím jak to vyřešit. Můžete mi někdo poradit nějaké řešení? Děkuji
- illagrenan
- Člen | 12
Používám Grid s Doctrine, když zavolám:
$grid->setOperations( ... )
skončím v Grid::addCheckers( )
:
// ...
$operation->addCheckbox($item[$pk]);
na Fatal erroru Cannot use object of type **** as array
.
Jako nejlepší mi přišlo implementovat ArrayAccess
do
mých entit:
// http://docs.doctrine-project.org/en/latest/cookbook/implementing-arrayaccess-for-domain-objects.html#option-2
class Foo implements \ArrayAccess
{
public function offsetExists($offset)
{
$value = $this->{"get$offset"}();
return $value !== null;
}
public function offsetSet($offset, $value)
{
$this->{"set$offset"}($value);
}
public function offsetGet($offset)
{
return $this->{"get$offset"}();
}
public function offsetUnset($offset)
{
$this->{"set$offset"}(null);
}
}
- fifo611
- Člen | 4
Zdravim,
hladal som, skusal som a aj tak neviem rozbehat Grido. Niekde robim chybu.
Skopiroval som z Github-u Grido do \libs, ale uz pri zaciatkoch vyhadzuje
ladenka chybu Class ‚Grido\Grid‘ not found.
Chcel som to zakomponovat uz do existujuceho projektu.
Skusal som aj composer, ale pravdepodobne s nim neviem dobre pracovat, kedze vyhadzuje chybu:
composer install
Loading composer repositories with package information
Installing dependencies
- Installing nette/nette (v2.0.10)
Loading from cache
- Installing o5/grido (dev-master ec741bf)
Cloning ec741bf21be2ea89f3af44a2fce35baabeab773d
[RuntimeException]
Failed to clone https://github.com/o5/grido.git, git was not found, check th
at it is installed and in your PATH env.
'git' is not recognized as an internal or external command,
operable program or batch file.
Vie niekto prosim pomoct?
- jiri.pudil
- Nette Blogger | 1029
Zkoušel jsi vymazat cache?
Ad Composer: Máš tam jasně napsané, kde je chyba: git was not found.
- gliny
- Člen | 25
Tak jsem tu zase s dalšími problémy
Používám nad nette database ještě fabika, to by ale neměl být problém, pokud jsem tomu dobře pozoruměl.
1.vůbec mi nejede našeptávaš (nijak zvlášť ho nepotřebuju, spíš mě to udivuje), ten sloupec cisloFaktury je bez jakehokoli joinu.
$grid->addColumn('cisloFaktury', 'Číslo faktury')
->setSortable()
->setFilter(Filter::TYPE_TEXT)
->setSuggestion(); // naseptavac nefunguje
2.pokud mám sloupec přidaný pomocí setColumn, tak mi nefunguje sortování, filtrování a našeptávaš. Nevím teda jestli pro všechny tyhle věci bych neměl mít připsanou metodu. A nebo teď mě napadlo zobrazovat ve sloupci čísla klientu ze seznamu klientu ale řadit podle id klienta z tabulky faktur, ikdyž tím si nepomůžu, protože nebude fungovat filter.
$grid->addColumn('cisloZakaznika', 'Klient')
->setColumn(function($item){
return $item->zakaznikFaktury->cisloKlienta;
})
->setSortable() // nefunguje
->setFilter(Filter::TYPE_TEXT) // nefunguje
->setSuggestion(); // nefunguje
- fifo611
- Člen | 4
Zdravim
chcem vytvorit odkaz na sablony zo stlpca. Tak pridam
Grido\Components\Columns\Column::TYPE_HREF
Lenze ono ma to hodi automaticky na nejaku sablonu. Lenze ja chcem ovplyvnit,
na aku sablonu to bude. To som nenasiel nikde.
Ale skusal som to obist (asi dost lamersky) funkciou
setCustomRender
$grid->addColumn('text', 'Nazov',Grido\Components\Columns\Column::TYPE_HREF)
->setCustomRender(function($item) {
$baseUri = '<a n:href="Task:'.$item->project_id.'">'.$item->text.'</a>';
return $baseUri;
})
Ide o to, ze mne to sice pekne vykresli, ale ono to po volani metody
setCustomRender, strati typ HREF, cize je to o5 typ text.
Co s tym?
- gliny
- Člen | 25
mrkni sem a určitě si nějaky grid s inline editaci vybereš vybereš
https://componette.org/search/?q=
Editoval gliny (20. 3. 2013 12:14)
- Kryšpin
- Člen | 27
Jak jsi tedy nakonec vyrešil tento problém? Mám stejný problém (u JOINOvaných tabulek mám stejný název sloupce, který sic u druhé pojmenovávam pomocí AS na jiný, ale to bohužel nestačí).
EDIT: Používám Dibi fluent.
xxxmisko napsal(a):
Ahojte chlapi, znova som tu :(
Vyrobil som si testovaciu tabuľku, kde som spolij 4 tabuľky, našepkávač funguje iba na stĺpcoch prvej tabuľky. Prosím o nasmerovanie, ako rozbehať filtrovanie napr na miestnosti.
Skúšal som setColumn(‚M.nazov‘), ale dostal som chybuUndefined property: DibiRow::$M.nazov
File: …\libs\Grido\Components\Columns\Column.php Line: 274
protected function getValue($row)
272: {
273: $column = $this->getColumn();
274: return $row->$column;
275: }kod spajania tabuliek
<?php $fluent = dibi::select('Z.*, F.nazov as funkcia, M.cislo as miestnost_cislo, M.nazov as miestnost_nazov, O.nazov as oddelenie_nazov') ->from('zamestnanec Z') ->leftJoin('funkcia F')->on('Z.funkcia_id = F.id') ->leftJoin('miestnost M')->on('Z.miestnost_id= M.id') ->leftJoin('oddelenie O')->on('Z.oddelenie_id = O.id'); $grid->setModel($fluent); ?>
Editoval Kryšpin (20. 3. 2013 12:55)
- llsm
- Člen | 121
o5 napsal(a):
o5 napsal(a):
To jsem si dobře naběhnul :)) No, asi to tam nechám, ale přidám možnost ovlivnit to callbackem.
Nejsem si jistý, jestli bys neměl minimálně na stránce s doplňkem
zmínit, že při použití výchozí count funkce pro dibi fluent vrací query
s GROUP BY
špatné výsledky. Vznikne totiž například
SELECT COUNT(*) FROM table LEFT JOIN otherTable ON ... GROUP BY table.id LIMIT 1
,
což vrací na tabulce s daty vždycky 1. Nějakého začátečníka by to
mohlo přinejmenším zabrzdit. U takovýchto dotazů nezbývá, než to
zanořit (SELECT COUNT(*) FROM (SELECT ... $query))
, aby to vracelo
správné výsledky. Podobné je to s filtrováním. Toto zmíněné má
bohužel ale performance issues v mysql.
Podobné je to s filtrováním, jak už psal někdo dříve. Rozhodně by bylo super, kdybys to opět aspoň zmínil na stránce doplňku
Jinak děkuji za hezký doplněk a nenech se odradit podobnými drobnostmi od další práce.
- Kryšpin
- Člen | 27
Měl bych dotaz k setteru ->setCondition():
lze předat callbacku více hodnot, než jen $value? Jde o to, že by pak šlo udělat jeden callback pro více sloupců a název sloupce do sql měnit dle předaného parametru (v tomto případě název sloupce)
<?php
/**
* Custom condition callback for filter Date.
* @param string $value
* @param string $column
* @return array|NULL
*/
public function gridDateFilterCondition($value, $column)
{
$date = explode('.', $value);
foreach ($date as &$val) {
$val = (int) $val;
}
return count($date) == 3
? array('['.$column.'] = %s', "{$date[2]}-{$date[1]}-{$date[0]}")
: NULL;
}
?>
- o5
- Člen | 416
Přestalo mi chodit odebíraní příspěvků mailem na tento thread, proto sem neodpovídal.
gliny napsal(a):
naseptavac nefunguje, dalsi nefunguje, nefunguje
Když něco nefunguje, tak je to potřeba opravit že :) Takže na řadu přijde debuggování. Takže se podívám co to vrací za chybu v ajax requestu atd, atd. Podle tebou poskytnutých informací mě nenapadá, kde by mohla být chyba.
cujan napsal(a):
Caute, je to super komponent…ako riesite pridanie noveho zaznamu a edit?
Inline editace není a ani nebude. Důvody jsem sepsal kdysi na svém blogu.
fifo611 napsal(a):
Zdravim
chcem vytvorit odkaz na sablony zo stlpca. Tak pridamGrido\Components\Columns\Column::TYPE_HREF
Lenze ono ma to hodi automaticky na nejaku sablonu. Lenze ja chcem ovplyvnit, na aku sablonu to bude. To som nenasiel nikde.
Ale skusal som to obist (asi dost lamersky) funkciou setCustomRender
Ide o to, ze mne to sice pekne vykresli, ale ono to po volani metody setCustomRender, strati typ HREF, cize je to o5 typ text.
Co s tym?
Zkus neuvádět typ, je tam zbytečný když použiješ custom vykreslení. V příkladu je to dobře vidět.
llsm napsal(a):
Nejsem si jistý, jestli bys neměl minimálně na stránce s doplňkem zmínit, že při použití výchozí count funkce pro dibi fluent vrací query s
GROUP BY
špatné výsledky. Vznikne totiž napříkladSELECT COUNT(*) FROM table LEFT JOIN otherTable ON ... GROUP BY table.id LIMIT 1
, což vrací na tabulce s daty vždycky 1. Nějakého začátečníka by to mohlo přinejmenším zabrzdit. U takovýchto dotazů nezbývá, než to zanořit(SELECT COUNT(*) FROM (SELECT ... $query))
, aby to vracelo správné výsledky. Podobné je to s filtrováním. Toto zmíněné má bohužel ale performance issues v mysql.Podobné je to s filtrováním, jak už psal někdo dříve. Rozhodně by bylo super, kdybys to opět aspoň zmínil na stránce doplňku
Jinak děkuji za hezký doplněk a nenech se odradit podobnými drobnostmi od další práce.
Je pro mě vždy těžké najít ten správný kompromis, kdy tam co poslat a kdy ne. Já z toho co jsme tu řešili výše usoudil, že většina instancí gridu budou na „jednoduchých“ query a tedy jsem výchozí stav optimalizoval na rychlost. Současný stav je neblokující, tedy lze z dokumentace vyčíst o možnosti si modelové metody „přiohnout“ a to předpokládám každého napadne. To bych taky mohl do dokumentace psát upozornění, že tento doplnět nebude fungovat bez Nette apod. Jinak co je podobného s filtrováním?
@Kryšpin, @xxxmisko: nerozumím vám co přesně chcete. setCondition() je právě pro jeden filtr a nijak tomu ani být nemá. Argument, že v Griditu něco takové jde, má pro mě nulovou hodnotu :)
Editoval o5 (21. 3. 2013 14:17)
- xxxmisko
- Člen | 140
o5
- išlo o to, že keď som skladal dotaz cez joiny (používal som tvoj spôsob), potom som začal filtrovať atď, tak to proste nešlo. Hádzalo chybu, keď som si dumpoval dotazy, boli úplne zlé a nešli. Napríklad vynechalo nejaké poddotazy, preto som to skrátka neriešil a napísal som view toho, čo potrebujem a grido nádherne funguje. Takisto som do neho implementoval translator, pričom ten v gride som vypol(zatiaľ iba obmedzil), aby som preklady vedel robiť na jednom mieste.
Grido je podľa mňa super doplnok, nepokrýva všetky nutnosti každého človeka, ale o tom to je, aby si to každý upravil podľa seba
Doplnok je pekný, šikovný, účinný a ďakujem za neho.
- o5
- Člen | 416
@xxxmisko:
Problému s filtrováním stále nerozumím, kromě metody getCount() se tam nic „magického“ neděje a tedy k žádnému vynechávání poddotazů by docházet nemělo.
Stejně tak implementace vlastního translátoru a vypnutí. Co jsi na tom implementoval, když tam existuje metoda $grid->setTranslator() která je tam právě kvůli tomu, aby se dal použít translátor používaný v projektu…
- Kryšpin
- Člen | 27
o5:
jak píše výše xxxmisko. Problém je s JOINovaným dotazem. U mě je
problém se shodnýmy názvy sloupců u JOINovaných tabulek. Pro klasický
výpis do Grida to funguje (použije se v dotazu
SELECT ... sloupec AS jinyNazevSloupce
), ale pak pro našeptávač
dotaz neprojde, protože dojde k SELECT * ...
a tím samozřejmě
dojde k chybě – ambiguous column names. Nevyřeší to
samozřejmě ani setColumn, protože nepodporuje zápis
tabulka.sloupec
.
Já jsem to vyřešil stejně jako xxxmisko pomocí view, ale bylo by pěkné, kdyby to šlo vyřešit v Gridu. Jedná se o dibi.