Nette Forms Horizontal CSS + Stránkování + Reset Button
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Joacim
- Člen | 229
Zdravím,
dělám agendu rezervací(plánů) v čase s tím že chci vypisovat defaultně aktuální týden se stránkováním (předchozí, následující, aktuální) a při aplikaci firmu uplatnit i tento filtr v němž jsou položky uživatel, lokace a od kdy do kdy se mají data renderovat (zobrazit) → Nette 2.2.9 + Bootstrap 3.3.4
- první věc co mi nefunguje je zaroznat formuláž vytvořený přes nette forms horizontálně
- jak propojit forms a stránkování s tím že defaultní stránka bude fungovat na principu google agendy s tím že uvidíme aktuální týden a budeme se moci pohybovat do minulosti i do budoucnosti naplánovaných
ukolů
- jak zjistím který submit jsem zmáčknul když mám jeden pro zapnutí filtru a druhý pro jeho zrušení
- lze předat requer formu přímo render metodě když tam mám stránkování v jejím parametru ?
TEMPLATE
{if $user->isAllowed('Reservations','agendaFilter')}
<div class="row">
<div class="col-lg-12">
{if $ActiveFilter}
<div class="alert alert-success">
<i class="fa fa-check fa-fw"></i> Filtr je aktivní
</div>
{else}
<div class="alert alert-warning">
<i class="fa fa-warning fa-fw"></i> Filtr není aktivní
</div>
{/if}
{control agendaFilter}
</div>
</div>
{/if}
<p id="cntr">Was found - <b>{$res_cnt}</b> record(s)</p>
<div class="clear"></div>
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th nowrap>From Date</th>
<th nowrap>To Date</th>
<th nowrap>Calendar</th>
<th nowrap>User</th>
<th nowrap>Department</th>
</tr>
</thead>
<tbody>
{foreach $all_res as $res}
<tr>
<td nowrap>{$res->fromDate|date:'%d.%m.%Y %H'}</td>
<td nowrap>{$res->toDate|date:'%d.%m.%Y %H'}</td>
<td nowrap>{$res->calendarName}</td>
<td nowrap>{$res->userName}</td>
<td nowrap>{$res->departmentName}</td>
</tr>
{/foreach}
</tbody>
</table>
<div class="center-block">
<ul class="pagination">
<li><a n:href="this, page => $paginator->getPage() - 1" n:if="!$paginator->isFirst()"> předchozí</a></li>
{for $i = 1; $i <= $paginator->getLastPage(); $i++}
<li {if $i == $paginator->getPage()} class="active" {/if}><a n:href="this, page => $i">{$i}</a></li>
{/for}
<li><a n:href="this, page => $paginator->getPage() + 1" n:if="!$paginator->isLast()"> další</a></li>
</ul>
</div>
</div>
vytvoření komponenty Formuláře (generuje se jako prvky tabulky)
$form = new Form;
$form->getElementPrototype()
->class('form-horizontal form-group flex')->role('form');
předání formuláře render agenda
public function processOfFilter($form) {
if ($form->isSuccess()) {
$this->formValues = $form->getValues();
$this->renderAgenda();
}
}
renderování dat agendy se stránkováním
public function renderAgenda($page = 1) {
$limit = 25;
// Is filter Active ?
if ($this->formValues != NULL) {
$this->template->ActiveFilter = TRUE;
} else {
$this->template->ActiveFilter = FALSE;
}
if ($this->user->isAllowed('Reservations', 'agendaFilter')) { // Admin & SuperUser
$this->template->res_cnt = //DB COUNT ALL
} else { // User
$this->template->res_cnt = //DB COUNT ONLY USER
}
$paginator = new Nette\Utils\Paginator;
$paginator->setItemCount($this->template->res_cnt); // celkový počet položek (např. článků)
$paginator->setItemsPerPage($limit); // počet položek na stránce
$paginator->setPage($page); // číslo aktuální stránky, číslováno od 1
if ($this->user->isAllowed('Reservations', 'agendaFilter')) { // Admin & SuperUser
$this->template->all_res = //DB FETCH ALL
} else { // Users
$this->template->all_res = //DB FETCH ALL
}
if ($page < 1 || $page > $paginator->getLastPage()) {
$page = 1;
}
$paginator->setPage($page);
$this->template->paginator = $paginator;
}
formulář zapnutía vypnutí filtru
$form->addSubmit('filter', 'Filtrovat')
->getControlPrototype()
->setClass('btn btn-default');
$form->addSubmit('reset', 'Zrušit')
->getControlPrototype()
->setClass('btn btn-default');
$form->onSuccess[] = array($this, 'processOfFilter');
return $form;
Editoval Joacim (18. 6. 2015 18:44)