stik mig så den staveplade mit private blabber, det skal sku ud – også selvom jeg ikke er den fødte ordbog

3Aug/081

et lille symfony hint

jeg har lige et lille hint jeg vil dele med andre der bruger symfony.

når man skal oprette eller rette "emner" så har man et par muligheder for flow.

  1. 2 actions executeAdd() executeEdit() - hver action laver validering (add.yml, edit.yml) og gemmer objektet
  2. 1 action executeAddEdit() - her skal man så selv lave validdringen, da man ikke i yml filen kan skeln mellem add og edit, hvilket ikke altid er lige heldigt.
  3. 2 actions executeAdd() executeEdit() til at håndtere visning og fejlhåndtering, men én executeSave() metode til at håndtere selve oprettelsen/opdateringen af objektet

her er et lille eksempel:

<?php
 
class articleActions extends sfActions
{
  public function executeAdd()
  {
    if ($this->getRequest()->getMethod() == sfRequest::POST)
    {
      $this->forward('article', 'save');
    }
 
    // setup the form and show it.
  }
 
  public function executeEdit()
  {
    $article = ArticlePeer::retrieveByPk($this->getRequestParameter('id'));
 
    if (!$article instanceof Article)
    {
      // show error
      $this->getUser()->setFlash('message', 'No article found');
      $this->redirect('@homepage');
    }
 
    if ($this->getRequest()->getMethod() == sfRequest::POST)
    {
      $this->forward('article', 'save');
    }
 
    // setup the form and show it.
    $this->article = $article;
  }  
 
  public function executeSave()
  {
    if ($this->getRequest()->getMethod() != sfRequest::POST)
    {
      // send user some place else...
      $this->redirect('@homepage');
    }
 
    $article = ArticlePeer::retrieveByPk($this->getRequestParameter('id'));
 
    if (!$article instanceof Article)
    {
      $article = new Article();
    }
 
    $article->setTitle($this->getRequestParameter('title'));
    $article->setContent($this->getRequestParameter('content'));
    $article->setIsPublished($this->getRequestParameter('is_published'));
    $article->save();
 
    $this->getUser()->setFlash('message', 'Article saved');
    $this->redirect('@homepage');
  }
}

jeg syntes metoden her holder da den gør at man kan håndtere validering udfra om det er en add eller en edit man har gang i - og det gør metoderne mere rene

Tagged som: , , Én kommentar
15Jul/082

google gears

har lige installeret google gear, det ser sku meget nice ud - tror hellere jeg må leget med det og alt det andet jeg har fået bookmarket

- gears ser dog ud til at kunne være meget handey så jeg tror faktisk at det ville være en god ide.

wordpress har i hvert fald brugt det på en ret så handy måde

til administrative systemer er det i hvert fald en ret så nice feature at man kan cache features og funktionalitet lokalt hos brugeren så man ikke skal loade tunge lister og interface grafik i tide og utide...

- der skal vidst lige tegnes og tales lidt om det på næste udviklermøde

oh, ja og hasse, gears bruger sqlite

Tagged som: , 2 Kommentarer
   

site tracking with Asynchronous Google Analytics plugin for Multisite by WordPress Expert at Web Design Jakarta.