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
-
class ShipmentCompaniesModule extends swAppController
-
{
-
-
public function executeAdd()
-
{
-
$this->oShipmentCompany = null;
-
$this->sAction = 'Create';
-
}
-
-
-
-
public function executeEdit()
-
{
-
$oShipmentCompaniesQuery = new Shipment_companiesModel();
-
$this->oShipmentCompany = $oShipmentCompaniesQuery->getByPK( $this->request()->Get( 'id', 'Int' ) );
-
-
$this->sAction = 'Update?id='.$this->oShipmentCompany->getId();
-
$this->setView( 'Add' );
-
}
-
-
-
public function executeCreate()
-
{
-
$oShipmentCompaniesQuery = new Shipment_companiesModel();
-
$oShipmentCompaniesQuery->setInfo( $this->request()->Post( 'info', 'String' ) );
-
$oShipmentCompaniesQuery->setName( $this->request()->Post( 'name' ) );
-
$oShipmentCompaniesQuery->setTelephone( $this->request()->Post( 'telephone', 'Int' ) );
-
$oShipmentCompaniesQuery->insert();
-
-
return 'Nowa firma wysyłkowa została utworzona.';
-
}
-
-
-
-
public function executeUpdate()
-
{
-
$oShipmentCompaniesQuery = new Shipment_companiesModel();
-
$oShipmentCompaniesQuery->addWhere( Shipment_companiesModel::ID, $this->request()->Get( 'id', 'Int' ) );
-
$oShipmentCompaniesQuery->setInfo( $this->request()->Post( 'info', 'String' ) );
-
$oShipmentCompaniesQuery->setName( $this->request()->Post( 'name' ) );
-
$oShipmentCompaniesQuery->setTelephone( $this->request()->Post( 'telephone', 'Int' ) );
-
$oShipmentCompaniesQuery->update();
-
-
return 'Zmiany zostały zapisane.';
-
}
-
}
-
?>
Szablon:
Validator:
-
<?xml version="1.0" encoding="UTF-8"?>
-
<validators enabled="true" module="ShipmentCompanies" action="Create" method="POST" errorAction="ShipmentCompanies/Add" foreign="false">
-
-
<name type="string">
-
<minlenght>3</minlenght>
-
<maxlenght>255</maxlenght>
-
<lenghterror>Musi miec dlugosc od {{minLenght}} do {{maxLenght}} znaków.</lenghterror>
-
</name>
-
-
<info type="string">
-
<minlenght>5</minlenght>
-
<lenghterror>Musi miec dlugosc od {{minLenght}} znaków.</lenghterror>
-
</info>
-
-
<telephone type="int">
-
<typeerror>Muszą być same liczby</typeerror>
-
<minlenght>8</minlenght>
-
<lenghterror>Telefon jest za krótki. Min długość to {{minLenght}} znaków.</lenghterror>
-
</telephone>
-
-
</validators>
Proste nie :D
9 Comments so far
Leave a reply
Length, nie lenght :).
@up: Dzieki za zwrócenie uwagi :)
Niestety notki nie poprawie, bo glupi wp przy edycji robi niezły bajzel :|
Zawsze możesz go w bazie poprawić :)
Hmm, ciekawie, tylko czemu operacje na bazie wykonywane w kontrolerach (nawet jeśli to ORM)?
W tym przykładzie tego nie widać, bo jest bardzo prosty. Ale nie raz po prostu zapytanie jest "budowane" na podstawie wielu czynników, tak wiec umieszczenie jako jednej funkcji w medelu odpada.
Nie do końca, my w Rapide mamy też wiele zaawansowanych czynników jednak wszystko udało się zbudować zgodnie z MVC. W sumie to nie musisz korzystać z MVC to tylko ideologia dla niektórych dobra, a da niektórych nie :)
Nie twierdze, że sie nie da. Da sie. Ale mi jest wygodniej w ten sposób ;)
Gdzie w sf jest problem z repopulacja formularzy? o_O
Nie problem, tylko sie meczylem z tym swego czasu. Nie bylo to tak intuicyjne, jak moje rozwiazanie :P. Ogolnie wiele rzeczy jest w sf malo intuicyjnych. Glownie z tego powodu zaczalem skrobac swojego fw.