Uchwycić moment…

menic’s devBlog

Archive for lipiec, 2007

Koniec prac jak makaron

No i znowu długo nic nie pisałem :) SparkleWorks jest prawie ukończone. Pracuje sie na nim całkiem przyjemnie, a nawet bardziej niż całkiem :> Koniec prac jeszcze nie nastąpił i wiele jest jeszcze do poprawienia, ale 2 projekt już na nim kończę :) Do opublikowania sie jeszcze nie nadaje, bo w niektórych miejscach, aż wstyd kod pokazać taki śmietnik jest :| Ale kiedyś myślę znajdę czas i zapnę wszystko na ostatni guzik :D Wtedy pewnie ujrzy światło dzienne... Ale kiedy to nastąpi, to tego nie wiedzą nawet najstarsi górale ;)

Na koniec mały przyklad. Pamiętam jak w Symfony męczyłem sie jak połączyć repopilacje formularza z validatorami. W SparkleWorks to zabawa.

Kontroler:

PHP:
  1. <?php
  2. class ShipmentCompaniesModule extends swAppController
  3. {
  4.  
  5. public function executeAdd()
  6. {
  7. $this->oShipmentCompany = null;
  8. $this->sAction = 'Create';
  9. }
  10.  
  11.  
  12.  
  13. public function executeEdit()
  14. {
  15. $oShipmentCompaniesQuery = new Shipment_companiesModel();
  16. $this->oShipmentCompany  = $oShipmentCompaniesQuery->getByPK( $this->request()->Get( 'id', 'Int' ) );
  17.  
  18. $this->sAction = 'Update?id='.$this->oShipmentCompany->getId();
  19. $this->setView( 'Add' );
  20. }
  21.  
  22.  
  23. public function executeCreate()
  24. {
  25. $oShipmentCompaniesQuery = new Shipment_companiesModel();
  26. $oShipmentCompaniesQuery->setInfo( $this->request()->Post( 'info', 'String' ) );
  27. $oShipmentCompaniesQuery->setName( $this->request()->Post( 'name' ) );
  28. $oShipmentCompaniesQuery->setTelephone( $this->request()->Post( 'telephone', 'Int' ) );
  29. $oShipmentCompaniesQuery->insert();
  30.  
  31. return 'Nowa firma wysyłkowa została utworzona.';
  32. }
  33.  
  34.  
  35.  
  36. public function executeUpdate()
  37. {
  38. $oShipmentCompaniesQuery = new Shipment_companiesModel();
  39. $oShipmentCompaniesQuery->addWhere( Shipment_companiesModel::ID, $this->request()->Get( 'id', 'Int' ) );
  40. $oShipmentCompaniesQuery->setInfo( $this->request()->Post( 'info', 'String' ) );
  41. $oShipmentCompaniesQuery->setName( $this->request()->Post( 'name' ) );
  42. $oShipmentCompaniesQuery->setTelephone( $this->request()->Post( 'telephone', 'Int' ) );
  43. $oShipmentCompaniesQuery->update();
  44.  
  45. return 'Zmiany zostały zapisane.';
  46. }
  47. }
  48. ?>

Szablon:

HTML:
  1. <h3>Dodaj firme</h3>
  2. <?php echo $oForm = new FormHelper( "$__sModule/$sAction" )?>
  3. <?php $oForm->addObject( $oShipmentCompany );?>
  4. <th>Nazwa</th>
  5. <td><?php echo $oForm->inputTextTag( 'name' ); echo $oForm->error( 'name' )?></td>
  6. </tr>
  7. <th>Telefon</th>
  8. <td><?php echo $oForm->inputTextTag( 'telephone' ); echo $oForm->error( 'telephone' )?></td>
  9. </tr>
  10. <th>Dodatkowe informacje</th>
  11. <td><?php echo $oForm->textTag( 'info' ); echo $oForm->error( 'info' )?></td>
  12. </tr>
  13. <th colspan="2"><?php echo $oForm->submitTag( 'Wyślij' )?></th>
  14. </tr>
  15. </table>

Validator:

XML:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <validators enabled="true" module="ShipmentCompanies" action="Create" method="POST"    errorAction="ShipmentCompanies/Add" foreign="false">
  3.  
  4. <name type="string">
  5. <minlenght>3</minlenght>
  6. <maxlenght>255</maxlenght>
  7. <lenghterror>Musi miec dlugosc od {{minLenght}} do {{maxLenght}} znaków.</lenghterror>
  8. </name>
  9.  
  10. <info type="string">
  11. <minlenght>5</minlenght>
  12. <lenghterror>Musi miec dlugosc od {{minLenght}} znaków.</lenghterror>
  13. </info>
  14.  
  15. <telephone type="int">
  16. <typeerror>Muszą być same liczby</typeerror>
  17. <minlenght>8</minlenght>
  18. <lenghterror>Telefon jest za krótki. Min długość to {{minLenght}} znaków.</lenghterror>
  19. </telephone>
  20.  
  21. </validators>

Proste nie :D

9 comments