php - Symfony2 - CalendarBundle - How to fetch user informations from database to render on calendar -


so, new symfony , i'm trying create functional calendar based application events rendered database using calendar-bundle.

passing documentation able make relationship between users , events rendered on calendar i'm stuck passing particular data, more user name.

below shown evententity responsible calendar event's details.

<?php namespace adesigns\calendarbundle\entity;  /** * class holding calendar event's details. * * @author mike yudin <mikeyudin@gmail.com> */  class evententity { /**  * @var mixed unique identifier of event (optional).  */ protected $id;  /**  * @var string title/label of calendar event.  */ protected $title;  /**  * @var string url relative current path.  */ protected $url;  /**  * @var string html color code bg color of event label.  */ protected $bgcolor;  /**  * @var string html color code foregorund color of event label.  */ protected $fgcolor;  /**  * @var string css class event label  */ protected $cssclass;  /**  * @var \datetime datetime object of event start date/time.  */ protected $startdatetime;  /**  * @var \datetime datetime object of event end date/time.  */ protected $enddatetime;  /**  * @var boolean day event?  */ protected $allday = false;  /**  * @var array non-standard fields  */ protected $otherfields = array();  public function __construct($title, \datetime $startdatetime, \datetime $enddatetime = null, $allday = false) {     $this->title = $title;     $this->startdatetime = $startdatetime;     $this->setallday($allday);      if ($enddatetime === null && $this->allday === false) {         throw new \invalidargumentexception("must specify event end datetime if not day event.");     }      $this->enddatetime = $enddatetime; }  /**  * convert calendar event details array  *  * @return array $event  */ public function toarray() {     $event = array();      if ($this->id !== null) {         $event['id'] = $this->id;     }      $event['title'] = $this->title;     $event['start'] = $this->startdatetime->format("y-m-d\th:i:sp");      if ($this->url !== null) {         $event['url'] = $this->url;     }      if ($this->bgcolor !== null) {         $event['backgroundcolor'] = $this->bgcolor;         $event['bordercolor'] = $this->bgcolor;     }      if ($this->fgcolor !== null) {         $event['textcolor'] = $this->fgcolor;     }      if ($this->cssclass !== null) {         $event['classname'] = $this->cssclass;     }      if ($this->enddatetime !== null) {         $event['end'] = $this->enddatetime->format("y-m-d\th:i:sp");     }      $event['allday'] = $this->allday;      foreach ($this->otherfields $field => $value) {         $event[$field] = $value;     }      return $event; }  public function setid($id) {     $this->id = $id; }  public function getid() {     return $this->id; }  public function settitle($title) {     $this->title = $title; }  public function gettitle() {     return $this->title; }  public function seturl($url) {     $this->url = $url; }  public function geturl() {     return $this->url; }  public function setbgcolor($color) {     $this->bgcolor = $color; }  public function getbgcolor() {     return $this->bgcolor; }  public function setfgcolor($color) {     $this->fgcolor = $color; }  public function getfgcolor() {     return $this->fgcolor; }  public function setcssclass($class) {     $this->cssclass = $class; }  public function getcssclass() {     return $this->cssclass; }  public function setstartdatetime(\datetime $start) {     $this->startdatetime = $start; }  public function getstartdatetime() {     return $this->startdatetime; }  public function setenddatetime(\datetime $end) {     $this->enddatetime = $end; }  public function getenddatetime() {     return $this->enddatetime; }  public function setallday($allday = false) {     $this->allday = (boolean) $allday; }  public function getallday() {     return $this->allday; }  /**  * @param string $name  * @param string $value  */ public function addfield($name, $value) {     $this->otherfields[$name] = $value; }  /**  * @param string $name  */ public function removefield($name) {     if (!array_key_exists($name, $this->otherfields)) {         return;     }      unset($this->otherfields[$name]); } } 

besides have calendareventlistener.php responsible data sent render on calendar:

<?php  namespace appbundle\eventlistener;  use adesigns\calendarbundle\event\calendarevent; use adesigns\calendarbundle\entity\evententity; use doctrine\orm\entitymanager;  class calendareventlistener { private $entitymanager;  public function __construct(entitymanager $entitymanager) {     $this->entitymanager = $entitymanager; }  public function loadevents(calendarevent $calendarevent) {     $startdate = $calendarevent->getstarteventdate();     $enddate = $calendarevent->getendeventdate();      // original request can filters calendar     // use filter in query example      $request = $calendarevent->getrequest();     $filter = $request->get('filter');       // load events using custom logic here,     // instance, retrieving events repository      $companyevents = $this->entitymanager->getrepository('appbundle:companyevents')                       ->createquerybuilder('companyevents')                       ->where('companyevents.starteventdate between :starteventdate , :endeventdate')                       ->setparameter('starteventdate', $startdate->format('y-m-d h:i:s'))                       ->setparameter('endeventdate', $enddate->format('y-m-d h:i:s'))                       ->getquery()->getresult();      // $companyevents , $companyevent in example     // represent entities database, not instances of evententity     // within bundle.     //     // create evententity instances , populate it's properties data     // own entities/database values.      foreach($companyevents $companyevent) {               $evententity = new evententity($companyevent->geteventname(),                                                                     //                                                                             $companyevent->getstarteventdate(),                                                                          $companyevent->getendeventdate()                                                                          ,null, true);         //optional calendar event settings         $evententity->setallday(true); // default false, set true if day event         $evententity->setbgcolor('#3366ff'); //set background color of event's label         $evententity->setfgcolor('#ffffff'); //set foreground color of event's label         $evententity->seturl('http://www.google.com'); // url send user when event label clicked         $evententity->setcssclass('my-custom-class'); // custom class may want apply event labels          //finally, add event calendarevent displaying on calendar         $calendarevent->addevent($evententity);      } } } 

and companyevents entity structuring events:

<?php  namespace appbundle\entity;  use doctrine\orm\mapping orm; use symfony\component\security\core\user\userinterface; use doctrine\common\collections\arraycollection;  /** * @orm\entity * @orm\table(name="companyevents") */ class companyevents { /**  * @orm\column(name="id", type="integer")  * @orm\id  * @orm\generatedvalue(strategy="auto")  */ private $id;  /** * events created users * @orm\manytoone(targetentity="user", inversedby="events") * @orm\joincolumn(name="user_id", referencedcolumnname="id") */ private $user;  /**  * @orm\column(name="event_name")  */ private $eventname;  /**  * @orm\column(name="event_date", type="datetime")  */ private $eventdate;  /**  * @orm\column(name="starteventdate", type="datetime")  */  private $starteventdate;   /**   * @orm\column(name="endeventdate", type="datetime")   */   private $endeventdate;  /**  * set eventname  *  * @param string $eventname  *  * @return companyevents  */ public function seteventname($eventname) {     $this->eventname = $eventname;      return $this; }  /**  * eventname  *  * @return string  */ public function geteventname() {     return $this->eventname; }  /**  * set eventdate  *  * @param string $eventdate  *  * @return companyevents  */ public function seteventdate($eventdate) {     $this->eventdate = $eventdate;      return $this; }  /**  * eventdate  *  * @return string  */ public function geteventdate() {     return $this->eventdate; }  /** * set start event date * @param string $starteventdate * * @return companyevents */ public function setstarteventdate($starteventdate) {     $this->starteventdate = $starteventdate;      return $this; }  /** *get start event date * @return string */ public function getstarteventdate() {     return $this->starteventdate; }  /** * set start event date * @param string $endeventdate * * @return companyevents */ public function setendeventdate($endeventdate) {     $this->endeventdate = $endeventdate;      return $this; }  /** *get start event date * @return string */ public function getendeventdate() {     return $this->endeventdate; }  /** * set user relationship * @param string $user_id * * @return companyevents */ public function setuser($user) {     $this->user = $user;     return $this; } /** * @return string */ public function getuser() {     return $this->user; }   /**  * id  *  * @return integer  */ public function getid() {     return $this->id; } 

}

so, problem instead of geteventname passed here:

$evententity = new evententity($companyevent->geteventname(),                               $companyevent->getstarteventdate(),                               $companyevent->getendeventdate()                               ,null, true); 

i want pass particular user name belongs specific event when change geteventname() (which renders title of event) other function (i have tried pass user_id entity), nothing else shown in calendar without dumping error.

any hints on resolving problem hardly appreciated :) !

if want render username in event's title can change geteventname method return user name:

public function geteventname() {     return $this->user->getusername(); } 

this way won't have change calendareventlistener code.

remember remove eventname property , it's setter method companyeventsentity. should name entity camelcased , in singular, companyevent.


Comments

Popular posts from this blog

php - Permission denied. Laravel linux server -

google bigquery - Delta between query execution time and Java query call to finish -

python - Pandas two dataframes multiplication? -