Datagrid Ublaboo – Vytváření odkazů
- Dvory59
- Člen | 40
Zdravím, chtěl bych se zeptat na řešení odkazů v datagridu Ublaboo.
Umí ColumnLink odkazovat i jinam než na akci? Případně jak můžu
vytvořit odkaz z URL, kterou mám v databázi?
Zkoušel jsem :
public function createComponentSimpleGrid($name)
{$grid = new DataGrid($this, $name);
$grid->setDataSource($this->db->table('urls');
$grid->addColumnLink('url','Odkaz','url')
s tím, že url je sloupec ve kterým jsou uložený kompletní odkazy na který se potřebuju dostat… Ale tohle řešení je asi nesmysl, teda určitě je to nesmysl, ale něco v tomhle smyslu bych potřeboval. Aby se vytvořil odkaz z obsahu sloupce. Dá se to nějak udělat? Díky všem za případné rady!
Editoval Dvory59 (11. 3. 2018 17:12)
- Dvory59
- Člen | 40
Děkuji, nakonec se podařilo. Nevšiml jsem si v první chvíli funkce pro možnost zrušit escapování.
Jen jsem narazil na problém, když jsem si vytvořil datagrid jako komponentu přes továrnu a potřebuji v různých metodách presenterů přidávat různé sloupce nějakým takovýmto způsobem:
class Presenter extends BasePresenter
{
public function createComponentSimpleGrid()
{
$grid = $this->fooControlFactory->create();
$grid->addColumnText('id','ID');
return $grid;
}
}
Bohužel tento zápis nefunguje. Rád bych v presenteru měnil i zdroje
odkud se berou pro grid data a nechávat továrnu ať tvoří jen jednoduchou
kostru gridu.
Lze tuto situaci nějakým podobným stylem vyřešit nebo jsem
úplně vedle?
V továrně mám pak
namespace App\Components;
interface IFooControlFactory
{
/** * @return FooControl */
public function create();
}
a v samotné komponentě mám kromě funkce render() a konstruktoru funkci na vytvoření
class FooControl extends \Nette\Application\UI\Control
{
public function createComponentSimpleGrid($name)
{
$grid = new DataGrid($this, $name);
$grid->setDataSource($this->database->table('vut_projects')->select('*'));
$grid->addColumnText('name', 'Name');
$grid->addColumnText('detail_url', 'Detail');
return $grid;
}
}
Děkuju za rady!