Tabulka s formuláři na místech kde neexistuje záznam
- Kajry
- Člen | 5
Ahoj.
Potřeboval bych vyřešit jednu věc a nějak nevím jak na to jestli si napsat
na to nějakou komponentu, nebo jak to udělat co nejjednodušeji. Potřebuji
vypsat tabulku o x řádcích a takovým způsobem, že vypíšu počet
řádků na kterých bude formulářový input a odesílací tlačítko. Po
odeslání bych potřeboval zkontrolovat jestli daný řádek již záznam má a
nebo ne a tabulku vykreslovat tak, že pokud záznam existuje tak se vypíše
hodnota záznamu z db a pokud ne vykreslí se formulář na zadání záznamu.
Neřešil někdy někdo podobný problém?
Díky za jakoukoliv konstruktivní odpověď.
- CZechBoY
- Člen | 3608
Máš nějakej kod teďka (co třeba nefunguje jak by měl)?
Já bych si asi udělal komponentu pro každý řádek s tím, že pokud by
existoval záznam tak bych vypsal ten formulář.
Ukáka kodu
class Table extends Nette\Application\UI\Control
{
protected function createComponentRow()
{
return new Nette\Application\UI\Multiplier(function ($id) {
if (isset($this->rowData[$id])) {
$rowData = $this->rowData[$id];
} else {
$rowData = null;
}
return $this->rowFactory->create($rowData);
});
}
}
class Row extends Nette\Application\UI\Control
{
public function __construct ($rowData = null, IFormRowFactory $formFactory)
{
$this->rowData = $rowData;
$this->formFactory = $formFactory;
}
public function render()
{
$this->template->rowData = $rowData;
$this->template->setFile($cestaSablony);
$this->template->render();
}
protected function createComponentForm()
{
return $this->formFactory->create();
}
}
interface IRowFactory
{
/** @return Row */
function create($rowData = null);
}
<td>
{if $rowData === null}
{control form}
{else}
{$rowData->sloupec}
{/if}
</td>