Komponenta notifikacna ikona ktora sa bude neustale invalidovat
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- duskohu
- Člen | 778
Caute snazim sa urobit notifikacnu ikonku ktora bude informovat o nejakom pocte. Len neviem aka je najvhodnejcia cesta, resp. ako urobit aby sa mi neustale invalidovala. Nejaka pomoc?
class OrderNotificationControl extends BaseControl
{
/** @var OrderRepository */
private $orderRepository;
/**
* @param OrderRepository $orderRepository
*/
public function __construct(OrderRepository $orderRepository)
{
parent::__construct();
$this->orderRepository = $orderRepository;
}
/**
* @return int
*/
private function checkNewOrderCount()
{
$newOrdersList = $this->orderRepository->findAll()
->where('status', OrderRepository::PROCESSING);
return $newOrdersList->count();
}
public function render()
{
$this->template->newOrdersCount = $this->checkNewOrderCount();
$this->template->render();
}
}
sablona:
<span n:snippet="orderNotificationControl">
<span class="badge badge-important">{$newOrdersCount}</span>
</span>
- frosty22
- Člen | 373
Snippety jsou sice fajn, ale na tohle bych je zrovna nepoužil – osobně bych to řešil nejjednodušeji nějakým handle v presenteru:
<?php
class FooPresenter extends Presenter {
public function handleCount()
{
$newOrdersList = $this->orderRepository->findAll()
->where('status', OrderRepository::PROCESSING);
$this->payload->count = $newOrdersList->count();
$this->sendPayload();
}
}
?>
a potom na straně JS, pokud používáš jQuery:
<script>
$(document).ready(function(){
if ($("#counter").length) {
window.setInterval(function(){
var elm = $("#counter");
$.getJSON(elm.attr("data-url"), function(data){ elm.text(data.count); });
}, 5000);
}
});
</script>
a v šabloně:
<div id="counter" data-url="{link count!}"></div>
Je to jen nástřel nevím zda-li tam není překlep, ale takto cca bych to řešil já ..