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.
- 2 actions executeAdd() executeEdit() - hver action laver validering (add.yml, edit.yml) og gemmer objektet
- 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.
- 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
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