Gridito (falešný datagrid) – komponenta
- colek
- Člen | 59
ahoj, chtěl bych se zeptat, jestli je gridito stále vyvíjeno :)
A pak dotaz k implementaci…
v demu je:
$grid->setModel(new Gridito\DibiFluentModel($db->select("*")->from("users")));
$grid->addColumn("id", "ID")->setSortable(true);
Jak k tomu přidám nějakou logiku? Např. pokud bych chtěl v tomto
případě ukazovat id
* 5 ?
díky
- Honza Marek
- Člen | 1664
S Griditem počítám i do budoucna a jakmile v něm budu něco akutně potřebovat, dovyvinu to.
id * 5 (příklad ze života…) můžeš ukazovat, pokud si definuješ vlastní renderer… což je snadné:
$grid->addColumn("id", "ID")->setRenderer(function ($entity) {
echo $entity->id * 5;
});
- baki
- Člen | 21
ahoj, jak už tu bylo řečeno. lze nějak vypsat do sloupce data z další
tabulky?
příklad:
mám příspěvky a články
a do jedné tabulky (tabulka komentářů) chci vypsat třeba jméno článku kde byl komentář vypsán a datum toho komentáře. ±
pro zjednodušení mám TABULKY: sloupce
CLANEK: id, jmeno
KOMENTAR: id, id_clanek, datum
jak by to šlo udělat. zkoušel jsem už hodně :)
díky
Editoval baki (18. 1. 2011 10:35)
- baki
- Člen | 21
mám takovou prasárnu:
<?php
$db = new DibiConnection(Environment::getConfig('db'));
$grid->setModel(new Gridito\DibiFluentModel($db->select(array('c', 'p'))
->from('comments','posts')
->leftJoin('c.post','p')
));
?>
nevím jak to přesně udělat. nějak jsem nepochopil ten join v dibi.
- bojovyletoun
- Člen | 667
- to je nejspíš syntaxe z doctrine
- tady je
->
leftJoin('comment')->on('post.id=comment.post_id ')
- https://phpfashion.com/…-sql-prikazy
Editoval bojovyletoun (18. 1. 2011 11:31)
- colek
- Člen | 59
Ahoj, ještě bych měl dotaz – jak udělat link z komponenty?
takhle mi to nefunguje, protože $this není objekt…
díky za radu
protected function createComponentGrid($name)
{
$id = $this->getParam('id');
$grid = new Gridito\Grid($this, $name);
$db = dibi::getConnection();
$grid->setModel(new Gridito\DibiFluentModel(UsersModel::getUserById($id) ));
$grid->setItemsPerPage(15);
$grid->addColumn("id", "ID")->setSortable(true);
$grid->addColumn("name", "Jméno", array(
"renderer" => function ($row) {
$this->link(':Front:Default:showUser', array( 'id' => $row->id));
},
"sortable" => true,
));
}
- davidm
- Člen | 81
protected function createComponentGrid($name)
{
$id = $this->getParam('id');
$presenter = $this;
$grid = new Gridito\Grid($this, $name);
$db = dibi::getConnection();
$grid->setModel(new Gridito\DibiFluentModel(UsersModel::getUserById($id) ));
$grid->setItemsPerPage(15);
$grid->addColumn("id", "ID")->setSortable(true);
$grid->addColumn("name", "Jméno", array(
"renderer" => function ($row) use ($presenter) {
$presenter->link(':Front:Default:showUser', array( 'id' => $row->id));
},
"sortable" => true,
));
}
- iwtu
- Člen | 8
Zdravím. Mám problém a vôbec nerozumiem prečo. Presne ten istý kód raz funguje a raz nie. V Gridite podľa nastaveného filtru sa zobrazujú aktívni a deaktivovaní užívatelia. Podľa hodnôt filtru sa aj gridito drobátko upravuje. Pri aktívnych mam buttony Detaily, Uprav, Deaktivuj a pri deaktivovaných sú Detaily a Aktivuj. Pri aktivovaných funguje všetko fajn, pri deaktivovaných ladička hádže error a notice.
Error: Nette\Application\BadSignalException #403 The signal receiver component ‚grid-actions-activate‘ is not found. //po kliknutí na button Aktivuj
Notice: Trying to get property of non-object na riadku Environment::getSession(‚UserPresenter‘)->userId = $user->id v $grid->addButton(„details“, „Detaily“, array(//po klinutí na Detaily
<?php
protected function createComponentGrid($name)
{
$grid = new Grid($this, $name);
$p = $this;
$model = new UsersModel();
$search = $this->getParam("hladaj", false);
$role = $this->getParam('rola', 'all');
$active = $this->getParam('aktivni', 1);
if ($search) {
$fluentModel = $model->filterUserSearch($search, $role, $active);
} else {
$fluentModel = $model->getUsersFluentModel($role, $active);
}
$grid->setModel($fluentModel);
$grid->setItemsPerPage(10);
$grid->addColumn("login", "Login")->setSortable(true);
$grid->addColumn("rola", "Rola")->setSortable(true);
$grid->addColumn("vytvoreny", "Vytvorený")->setSortable(true);
$grid->addButton("details", "Detaily", array(
"handler" => function ($user) use ($grid) {
\Nette\Debug::dump($user);
Environment::getSession('UserPresenter')->userId = $user->id;
$grid->presenter->redirect("User:details");
},
));
if ($active) {
$grid->addButton("edit", "Uprav", array(
"handler" => function ($user) use ($grid) {
Environment::getSession('UserPresenter')->userId = $user->id;
switch (UsersModel::getRole($user->id)) {
case 'klient':
$grid->presenter->redirect("User:EditClient");
case 'tester':
$grid->presenter->redirect("User:EditTester");
case 'terapeut':
$grid->presenter->redirect("User:Edit");
case 'vedec':
$grid->presenter->redirect("User:Edit");
}
},
));
$grid->addButton("deactivate", "Deaktivuj", array(
"handler" => function ($user) {
$model = new UsersModel();
$model->deactivateUser($user->id);
},
));
} else {
$grid->addButton("activate", "Aktivuj", array(
"handler" => function ($user) {
$model = new UsersModel();
$model->activateUser($user->id);
},
));
}
}
?>
id poslielam v session kvoli bezpecnosti. Som začiatočník v PHP, nette, dibi. Za akúkoľvek inšpiráciu vopred ďakujem.
Report generated at 2011/01/18 19:48:43
http://localhost/…in/accounts/?…
PHP 5.3.5
Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/1.0.0c DAV/2 PHP/5.3.5 with
Suhosin-Patch
Nette Framework 2.0-dev (revision 9e52d77 released on 2010–12–21)
- Filip Procházka
- Moderator | 4668
to je přece jasné ne? :)
Environment::getSession('UserPresenter')->userId = $user->id;
// takhle je to správně
Environment::getSession('UserPresenter')->offsetSet('userId', $user->id);
// nebo takhle
$userPresenterSession = Environment::getSession('UserPresenter');
$userPresenterSession['userId'] = $user->id;
//edit: zdá se že fungují všechny tři způsoby, proč jsem si myslel, že ten první nefunguje? :-/
Editoval HosipLan (19. 1. 2011 7:54)
- iwtu
- Člen | 8
Týmto to bohužiaľ nie je. Vyhadzuje presne tie isté hlášky. Len by som ešte dodal, ze v prípade notice ladenka vo Variable uvádza $user FALSE, kdež to
Gridito/Button.php (81) source ▼ Gridito\BaseButton→ handleClick
(arguments ▼) $token „8f863546136e1eb08eeb9301f6dac789“ (32)
$uniqueId „139“ (3)
„139“ je správna hodnota, i keď nikde nemám premennú $uniqueId. Ak by náhodou fungoval, prečo by bol správny ten kód?
V prípade error nevyhodí to zlyhá už na $application->run();. Pripomínam, že rozdiel je iba podľa nastaveného filtru. Prikladám aj kód filtru.
<?php
protected function createComponentFilter($name)
{
$role = array(
'all' => 'všetky',
'klient' => 'klient',
'terapeut' => 'terapeut',
'tester' => 'tester',
'vedec' => 'vedec',
);
$form = new AppForm($this, $name);
$form->addText("hladaj", 'Hľadaj: ')->setDefaultValue($this->getParam('hladaj',''));
$form->addSelect('rola', 'Rola', $role)->setDefaultValue($this->getParam('rola','all'));
$form->addSelect('aktivni', '', array(
'1' => 'aktívni',
'0' => 'deaktivovaní',
))->setDefaultValue($this->getParam('aktivni','1'));
$form->addSubmit("submit", "Hľadaj");
$form->onSubmit[] = array($this, "filterSubmit");
}
public function filterSubmit($form)
{
$this->redirect("Default", $form->getValues());
}
?>
- Honza Marek
- Člen | 1664
nevím v čem je chyba, ale pro zobrazení/nezobrazení tlačítka se dá použít option „visible“.
$grid->addButton("activate", "Aktivuj", array(
"handler" => function ($user) {
$model = new UsersModel();
$model->activateUser($user->id);
},
"visible" => !$active
));
- Aurielle
- Člen | 1281
Tuhle funkci jsem si pokusně implementoval, každopádně jsem Gridito měnil víc a netuším jestli k tomu není potřeba ještě něco dalšího… obecně by měla stačit podmínka typu
public $defaultSortType;
public $defaultSortColumn;
if($this->defaultSortType && $this->defaultSortColumn && !$this->sortColumn && !$this->sortType) {
$this->sortType = $this->defaultSortType;
$this->sortColumn = $this->defaultSortColumn
}
Tu podmínku strč před řazení v tuším render() metodě.
- colek
- Člen | 59
Yep, tohle je ono… díky moc…
ještě bych se chtěl zeptat autora, jestli neplánuje tuhle funkčnost přidat do výchozího balíku. Já totiž neradu upravuju cizí věci, pak potřebuji udělat třeba kvůli jiné funkčnosti upgrade a nevím kde všude jsem provedl změny… Zrovna gridito není nijak gigantické, ale obecně nerad upravuji cizí knihovny :)
- Filip Procházka
- Moderator | 4668
$ git clone git://github.com/janmarek/Gridito.git
// potřebuju něco upravit ...
$ git add moje_zmeny
$ git commit -m "upraveno tohle a tamto"
// za měsíc: Honza vydal novou verzi!
$ git fetch
$ git rebase origin/master
$ git rebase -i origin/master
// opakovat do zblbnutí
Takhle si můžeš udržet svoje změny organizované s aktuální originální komponentou. Popř je pak můžeš ještě pushovat na svůj fork Gridita a Honza je může zahrnout do originálního repozitáře, když bude chtít.
- Honza Marek
- Člen | 1664
iwtu napsal(a):
este ak sa mozem spytat, o asi taku advanced featuru… nemozhol by sa nadpis buttonu menit alebo ikonka menit podla nejakej nejakej hodnoty riadku?
Dají se jednotlivý tlačítka vypínat a zobrazovat podle nějaké hodnoty řádku: http://griddemo.janmarek.net/document_root/?…
- na1k
- Člen | 288
Dá se nějak jednoduše zničit provázanost s jQueryUI? Mám celkem specifické požadavky na nastylování (a osobní odpor k jQUI) a pořád se s tím musím přebíjet :-/
Hraju si s Griditem teprve od včerejška, tak jsem do toho možná ještě neproniknul. Rozhodně se ale líbí a právě teď jím zkouším nahradit původní Datagrid a uvidím jak se osvědčí :)
- laky
- Člen | 3
Zdravim, teprve zacinam a libi se mi tento grid. a jeste vic by se mi libilo kdyby slo ve windowsButton mit formular treba pro editaci. Mohlo by to fungovat takle? Formular se vykresli ale vubec nedojde k zavolani userFormSubmitted
<?php
$grid->addToolbarWindowButton("create", "Přidat záznam")->setHandler(function () {
// formular pro pridani zaznamu ----------------
$form = new AppForm;
$form->addText('username', 'Uživatelské jméno:')
->addRule(Form::FILLED, 'Přezdívka');
$form->addText('password', 'Heslo:')
->addRule(Form::FILLED, 'Tajné heslo');
$form->addText('email', 'E-mail:')
->addRule(Form::FILLED, 'Chybí email');
$form->addSubmit('save', 'Uložit')->setAttribute('class', 'default')->onClick[] = 'OkClicked';
$form->addSubmit('cancel', 'Zrušit')->setValidationScope(NULL);
$form->onSubmit[] = array($this, 'userFormSubmitted');
$form->addProtection('Prosím vyplňte forumlář znova(bezpečnostní token vypršel).');
echo $form;
})->setIcon("ui-icon-newwin");
?>
dekuji za odpoved
- Honza Marek
- Člen | 1664
Editační formulář ve window buttonu mít jde, ale ten musí být definován klasicky v presenteru. Jinak se při odeslání nedá najít a proto neproběhne ta onSubmit akce.
<?php
$presenter = $this;
$grid->addToolbarWindowButton("create", "Přidat záznam")->setHandler(function () use ($presenter) {
echo $presenter['addForm'];
})->setIcon("ui-icon-newwin");
?>
Nicméně bych to spíše nedoporučil. Pokud bude formulář obsahovat validaci, kterou nelze zkontrolovat javascriptem, při špatném odeslání se mi již formulář nezobrazí a přijdu o již vyplněná data.
- bojovyletoun
- Člen | 667
Aha, tak já jsem na githubu našel toto
v6ak-Gridito-dfbb639
funguje pěkně. Je tam dibi model hotový a
defatko co se musí pro zprovoznění udělat, je v set model předat anonymní
funkci, která přidá k formuláři editační pole a addEditButton a to
je vše.
PS jinak tohle je zavržená větev? Zkoušel jsem i verzi od Pavel Maca- ta je hlavní verze? V kterých verzích je podpora filtrů?
- colek
- Člen | 59
měl bych k tomu ještě jeden dotaz…
jak se dá postupovat, pokud potřebuji vykreslit v buňce formulář (jeden select a submit), který je vztažen k datům konkrétního řádku.
Tj. např. na řádku 3 mám ve sloupci ID hodnotu 5 – potřebuji se podívat do databáze a k ID 5 najít nějaké hodnoty a ty zobrazit v tom selectboxu.
Komponentou to nepůjde, ta se zavolá jen jednou, takže jí žádné parametry nepošlu.
Můžu z té anonymní funkce nějak zavolat formulář, který bude mít pokaždé jiná data?
- Šaman
- Člen | 2659
gmvasek napsal(a):
Používám vlastní modifikaci verze z hlavního repozitáře, co se týče modelů jen jsem dopsal/upravil OrmionModel a Gridito funguje perfektně.
Super, zkouším Ormion a tohle se hodí. Nicméně jedno mi není jasné:
Dá se nějak elegantněji zapsat tohle?
$grid->setModel(new Gridito\OrmionModel(Character::findAll()));
$grid->addColumn("name", "Jméno")->setSortable(true);
$grid->addColumn("state", "Status")
->setRenderer(function ($entity) {echo $entity->State->text;})
->setSortable(true);
Nejprve jsem intuitivně zkoušel jsem tuto, ale to nešlape:
$grid->setModel(new Gridito\OrmionModel(Character::findAll()));
$grid->addColumn("name", "Jméno")->setSortable(true);
$grid->addColumn("State->text", "Status")
->setSortable(true);
state
je property, která obsahuje id záznamu v nezávislé
tabulce
State
je objekt z nezávislé tabulky
State->text
je text který odpovídá ID v políčku
state
Editoval Šaman (1. 2. 2011 5:26)
- srandis
- Člen | 4
WindowButton nespustí handler pokud model naplním daty s využitím joinu
Zevrubná ukázka:
<?php
$grid->setModel(new Gridito\DibiFluentModel(dibi::select('firma,cislo_faktury')
->from('dodavatel')
->innerJoin('faktura')
->on('dodavatel.id=prijate_faktury.dodavatel_id')));
$grid->addWindowButton('detail','Detail')
->setHandler(function () {echo 'cokoliv';});
?>
Zde při kliknutí na tlačítko Detail vyskočí jen prázdné jquery-ui
okénko.
Pokud použiji SELECT nad jednou tabulkou zobrazí se očekávaně
‚cokoliv‘.
Nevíte v čem by mohl být problém? Děkuji za případnou reakci .)
používám:
- janmarek-Gridito-2d46e33 – prostě co je teĎ odkaz na staženi zde v doplňcích
- Nette 2.0 alpha2 z 22.11.2010
- php 5.3.5
EDIT:
Tak jsem na to již přišel. V mém konkrétním případě kde se mi
v joinu kryly idčka jsem aliasoval zhruba takto
prijate_faktury.id AS id
a gridito, když vytahuje jednotlivý
záznamy tak přidává k fluentu další klauzuli where s primárním
klíčem, který má standardně definovaný jako ‚id‘ a tak bylo potřeba
si trošku pohrát s názvy id sloupců a nastavit primary key v griditu
vlastní.
V tom jednoduchém příkladě, co jsem napsal výše, pokud by byl primary key třeba sloupec cislo_faktury by to vypadalo takto:
<?php
$model = new Gridito\DibiFluentModel(dibi::select('firma,cislo_faktury')
->from('dodavatel')
->innerJoin('faktura')
->on('dodavatel.id=prijate_faktury.dodavatel_id'));
$model->setPrimaryKey('cislo_faktury');
$grid->setModel($model);
$grid->addWindowButton('detail','Detail')
->setHandler(function () {echo 'cokoliv';});
?>
Editoval srandis (23. 2. 2011 20:56)
- Bumerank
- Člen | 30
měl bych dotaz k tlačítkům (potřebuji editaci / smazání a další akci pro jednotlivé položky) – používám dibi
<?php
$grid->addButton('name', 'Popisek');
?>
..zkoušel jsem i různé další syntaxe z ukázkových příkladů
vyhodí chybu: Undefined property: DibiRow::$id
<?php
104: public function getUniqueId($item)
105: {
106: return $item->{$this->getPrimaryKey()};
107: }
?>
- Podbor
- Člen | 19
Zdarec,
měl bych k téhle pěkné komponentně dotaz. Pokouším se implementovat ji a
narazil jsem na problém u vykreslování tlačítek pro úpravu, smazání
atp. Používám dibi a když chci vykreslit přes „WindowButton“ tlačítko
„info“, které by v dialogu vypsalo informace o dané entitně, ale
nevím, jak přistoupit v daném řádku ke konkrétnímu uživateli.
Zkouším předávat parametr „$row“, ale když se poté zobrazí jQuery UI
dialog, tak je prázdný…
Ukázka kódu
<?php
$grid = new Gridito\Grid($this, $name);
$grid->setModel(new Gridito\DibiFluentModel($this->getUsersModel()->findUsersFluent()));
$grid->setItemsPerPage(5);
// columns
$grid->addColumn("id", "ID")->setSortable(true);
$grid->addColumn("login", "Login")->setSortable(true);
$grid->addColumn("name", "Jméno")->setSortable(true);
$grid->addColumn("surname", "Příjmení")->setSortable(true);
$grid->setDefaultSort("login","asc");
// Přidání nového uživatele pokud má daný uživatel práva
$grid->addWindowButton("info","Info",array(
"handler" => function ($row){
echo "$row->name $row->surname<br>($row->mail)";
},
"icon" => "ui-icon-search",
"showText"=> false
));
?>
Tlačítko se mi zobrazí, po kliknutí vyskočí dialog, ale neobsahuje
vůbec nic, pouze prázdný „div“.
Předem díky.
Editoval Podbor (31. 3. 2011 14:25)
- Podbor
- Člen | 19
Tak se mi podařilo zjistit, co je za problém: tahám přes DibiFluent
zdrojová data složeným dotazem ze dvou tabulek, u kterých obou je „id“,
čili, když se následně přidává podmínka …->where(„id = X“)
vyhodí výjimku „nejednoznačný identifikátor“. Jakým způsobem se dá
definovat název primárního klíče?
Když jsem zkusil „id“ přes „as“ přejmenovat, v podmínce „WHERE“
ho stejně označoval jako neexistující sloupec a do „setPrimaryKey“ mi
neakceptuje prefix tabulky (users.id) hlásí jako neznámé…
Napadá někoho ještě jiné řešení?
Editoval Podbor (31. 3. 2011 15:03)
- Podbor
- Člen | 19
v6ak napsal(a):
setPrimaryKey
Díky, vyzkoušel jsem ho, ale stále nejsem schopen mu správně označit
ten název sloupce. Zkoušel jsem to za
a) SELECT u.id AS user_id … – ale pak ho v podmínce WHERE user_id =
7 stejně dotaz nezná a vyhodí výjimku
b) ten sloupec nastavit jako primární klíč přes
<?php
$grid->getModel()->setPrimaryKey("u.id");
?>
s tím výsledkem, že $u.id bylo nalezeno jako nedefinované…
Lze to ještě nějak jinak?
- Podbor
- Člen | 19
srandis napsal(a):
Podbor napsal(a):
v6ak napsal(a):
setPrimaryKey
Lze to ještě nějak jinak?
Já musel přejmenovat id sloupce v dtb, protože mě nic jinýho tehdy nenapadlo jak to udělat bez zásahů do gridita.
Díky, asi to taky tak udělám, neb modifikovat Gridito mi nepříjde zrovna nejlepší cesta.
- yokozunacz
- Člen | 5
Ahoj, existuje moznost, jak se po kliku na button a nasledne editaci dat v presenteru, se zase vratit zpet na vyfiltrovana data v datagridu? V komponente Romana Sklenare jsem nasel moznost:
<?php
$grid->rememberState = TRUE; // povolí ukládání stavů komponenty do session
?>
V Gridito jsem podobnou moznost neobjevil, ale mozna koukam spatne…
- VaKvas
- Začátečník | 111
Zdravím,
zprovoznil jsem Gridito a pada me Filter.
Po kliknuti na Filter, dostavam hlasku :
Passed more parameters than method FrontModule\InfoPresenter::renderDefault() expects.
Vse jsem pouzil z prikladu, jen jsem dal pryc jeden sloupec, ktery neni
v databazi.
CheckBox jsem pro zkousku predelal jako na „admin only“ posila to WHERE
role=admin.
v DB jsou slouce ID, EMAIL, PASSWORD, NAME a ROLE.
Predem moc díky za radu.
Zde mam presenter:
namespace FrontModule;
use Nette\Application\AppForm;
/** * Dibi datagrid with filters example presenter
* * * @author Jan Marek *
* @license MIT
*/
class InfoPresenter extends BasePresenter {
/**
* @var bool
* @persistent
*/
public $activeOnly = false;
/**
* @var string
* @persistent
*/
public $search;
public function renderDefault() {
$this->template->filters = $this["filters"];
}
protected function createComponentGrid($name) {
$grid = new \Gridito\Grid($this, $name);
$db = \Nette\Environment::getService("DibiConnection");
$model = new \UsersGriditoDibiModel($db);
if ($this->getParam("activeOnly")) {
$model->filterActiveOnly();
}
$search = $this->getParam("search", false);
if ($search) {
$model->filterSearch($search);
} $grid->setModel($model);
// columns
$grid->addColumn("id", "ID")->setSortable(true);
$grid->addColumn("email", "Email")->setSortable(true);
$grid->addColumn("password", "Heslo")->setSortable(true);
$grid->addColumn("name", "Jméno")->setSortable(true);
//$grid->addColumn("role", "Role")->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("role", "Ma roli", array(
"renderer" => function ($row) {
\Gridito\Column::renderBoolean($row->role);
},
"sortable" => true,
));
}
protected function createComponentFilters($name) {
$form = new AppForm($this, $name);
$form->addText("search", "Search by")
->setDefaultValue($this->getParam("search", ""));
$form->addCheckbox("activeOnly", "Active users only")
->setDefaultValue($this->getParam("activeOnly"));
$form->addSubmit("s", "Filter");
$form->onSubmit[] = array($this, "filters_submit");
}
public function filters_submit($form) {
$this->redirect("default", $form->getValues());
}
}
Model:
class UsersGriditoDibiModel extends \Gridito\DibiFluentModel {
public function __construct(\DibiConnection $db) {
parent::__construct($db->select("*")->from("users"));
}
public function filterActiveOnly() {
$this->fluent->where("role = admin");
}
public function filterSearch($search) {
$searchString = "%$search%";
$this->fluent->where("(name like %s OR email like %s)", $searchString, $searchString);
}
}
a sablona :
{block content}
{control $filters begin}
<fieldset>
<legend>Filters</legend>
<p>
{$filters["search"]->label} {$filters["search"]->control}
{$filters["activeOnly"]->control} {$filters["activeOnly"]->label}
{$filters["s"]->control}
</p></fieldset>
{control $filters end}
{control grid}
{/block}
Editoval VaKvas (7. 4. 2011 21:45)
- Honza Marek
- Člen | 1664
Zajímavý… zkusil bych
public function renderDefault($search, $activeOnly) { // <-- ty parametry
// ...
}
ale myslim, že by to mělo fungovat i bez toho.
- VaKvas
- Začátečník | 111
Tak pak:
Object of class Nette\ArrayHash could not be converted to string
Ladenka se me zastavuje na radku
$this->redirect("default", $form->getValues());
nemuzu mit blbe routy ? Mam jen zakladni ale nevim jestli jsou to ty spravny :
$router[] = new Route('index.php', 'Front:Pages:');
$router[] = new Route('<presenter>');
$router[] = new Route('<presenter>/<action>');
- Honza Marek
- Člen | 1664
Aha, už chápu… Formuláře přestaly vracet v novější verzi Nette svoje hodnoty jako pole, takže to nejde přímo předat do toho redirectu.
$v = $form->getValues();
$this->redirect('default', array('search' => $v->search, 'activeOnly' => $v->activeOnly));
- Filip Procházka
- Moderator | 4668
ArrayHash si ukládá data do členských proměnných, prosté přetypování na array funguje stejně a příjde mi jednodužší. :)
$this->redirect('default', (array)$form->getValues());