Component, Factory parametry
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Isigarek
- Člen | 74
Zdravíčko mám tu menší problém. Právě jsem se chtěl začít učit vytvářet továrničky pro zjednodušení práce. A tak jsem narazil na návod s použitím interface Factory řešení jenže chtěl bych tam předávat i parametry ID. Díky za rady…
Component
<?php
namespace App\FrontedModul\Model;
use Nette;
use Nette\Application\UI\Control;
class NotificationControl extends Control
{
/**@var for render function*/
private $unreadCount = 0;
/**@persistent */
private $notifications = array();
/**@var Nette\Database\Context @inject*/
protected $db;
public function __construct()
{
}
/**
* Add notification to system
*@param array params
*@return void
*/
public function add($params)
{
$this->notifications[] = array(
"title" => $params["title"],
"icon" => $params["icon"],
"time" => $params["time"],
"type" => $params["type"],
"status" => $params["status"],
);
return true;
}
/**
* Get all notifications from db
*@param int userID
*@return array dataArray
*/
public function get($ID)
{
$data = $this->db->table("notification")->where("userID",$ID);
$return = array();
foreach($data as $noti)
{
if($noti["status"] == "unread") $this->unreadCount ++;
$this->add($noti);
}
}
/**
* Render function for control
*/
public function render()
{
$template = $this->template;
$template->setFile(__DIR__."/NotificationControl/notification.latte");
$template->unreadCount = $this->unreadCount;
$template->notifications = $this->notifications;
$template->render();
}
}
Factory
<?php
interface INotificationControlFactory
{
/** @return App\FrontedModul\Model\NotificationControl */
function create();
}
Použití v BASE PRESENTERU
protected function createComponentNotifications()
{
return $this->noti->create("data");
}
- David Matějka
- Moderator | 6445
uvedes je v interface
interface INotificationControlFactory
{
/** @return App\FrontedModul\Model\NotificationControl */
function create($id);
}
a stejne pojmenovany parametr v konstruktoru NotificationControl
class NotificationControl extends Control
{
private $id;
public function __construct($id)
{
$this->id = $id;
}
tohle tedy plati pro 2.3, ve starsi verzi se to musi sloziteji zapsat v neonu