[Symfony] Custom theme for propel:generate-module

& php, symfony.

Propel generators are very useful tool, they automate creating of most common CRUD modules. However default theme have serial issues. Mostly, html forms are based on tables and list is not a sfPropelPager.

But there is an easy way to make your own theme based on symfony default. You can find it into sf_pear_dir/data/generator/sfPropelModule/default and add/modify whatever you want. To use it in your app just putt it into sf_project_dir/data/geneator/sfPropelModule directory.

Then using symfony console script use “theme” argument:

empathon@aden ~/workspace/example $ symfony propel:generate-module backend author Author --with-show --theme=clean

I have create my own custom theme with forms on divs, pager, flash messege on delete and create/edit. You can download it here.

Udpate: Few errors fixed.

[Symfony] Getting array of errors from sfForm

& php, symfony.

That was tricky. I hope it will help somebody.

<?php
class SomeForm extends sfForm
{
	//..
 
	/**
	 * Return array of current errors
	 *
	 * @return array
	 */
	public function getErrorsArray()
	{
		$errors = $embedded_forms_name = array();
		foreach($this->getEmbeddedForms() as $embedded_form){
			$embedded_forms_name[] = $embedded_form->getName();
		}
		foreach($this as $field){
			if($field->hasError())
			{
				if(in_array($field->getName(), $embedded_forms_name)){
					foreach($field as $field_embedded){
						if($field_embedded->hasError()) $errors[$field->getName().'_'.$field_embedded->getName()] = $field_embedded->getError()->__toString();
					}
				} else {
					$errors[$field->getName()] = $field->getError()->__toString();
				}
			}
		}
		return $errors;
	}
}

For embedded forms it return embedded form name plus field name as a key.
You got an idea ;-) It should be standard feature IMHO.

Update:
Of course there is a easier way if you don’t have embedded forms:

//...
foreach ($this as $field) {
	$field->hasError() ? $errors[$field->getName()] = $field->getError()__toString() : null;
}

or

//...
foreach ($this->getErrorSchema()->getErrors() as $name => $error) {
	$errors[$name] = $error->getMessageFormat();
}

iPhone OS 3.0 review

& Uncategorized.

Krótko (to nie jest lista zmian – to rzeczy, które zauważyłem oraz są dla mnie ważne).

Ogólne wrażenia z systemu:

  • [plus] – szybkość, szybkość i jeszcze raz szybkość. Wszystko uruchamia się błyskawicznie – trudno aż mi sobie wyobrazić działanie na 3Gs.
  • [minus] – nie przetłumaczono części słów w polskiej wersji – między innymi nazwy dni i miesięcy
  • [minus] – nowa formatka logowania jest brzydka i niedopracowana
  • [plus] – możliwość wykorzystania telefonu jako modem przez kabel (sprawdzę jak tylko odblokuje u operatora)
  • [minus] – poprzednio godzina 0-9 miała format 0x a może się mylę? Wolę jednak tamten.
  • [plus] – a ten plusik trochę tak “na krechę” – za to, że można podłączać pod złącze urządzenia trzecie  i obsługiwać je za pomocą natywnego API. Narazie nic mi po tym ale kto wie ;-)

Wiadomości:

  • [plus] – opcja wyłączenia podglądu
  • [plus] – MMS’y działają bez żadych kombinacji w Orange
  • [plus] – forward

Zdjęcia/Aparat:

  • [plus] – aparat radzi sobie dużo lepiej z robieniem zdjęć. Nawet przy celowym ruchu w wiekszości wychodzą ostre zdjęcia. Podgląd nie tnie. Można robić zdjęcia w znacznie słabszym oświetleniu.
  • [plus] – bardzo przytany podgląd ostatniego zdjęcia

YouTube:

  • [plus] – obsługa konta
  • [plus] – OS spytał mnie czy chcę dodać ulubione z iPhona do tych na koncie
  • [plus] – wybór zakresu czasowego w popularnych (może już był?)
  • [plus] – wideo ładują się jakby szybciej

Pogoda:

  • [plus] – nocą księżyc pokazuje aktualna fazę (ciekawe ilu z Was to zauważyło?;-))

Zegar:

  • [minus] – nie podoba mi sie redesing stopera

Notatki:

  • [plus] – linki, adresy email, numery telefonów (być może też adresy w odpowiednim formacie) są rozpoznawane i towarzyszą im odpowiednie akcje

AppStore:

  • [plus] – screeny z aplikacji ładują się odrazu

Giełda:

  • [plus] – nowy wykres w pozycji poziomej wraz z zaznaczaniem okresów – nie używam tej aplikacji często ale ficzer jest bardz miły

Telefon:

  • [plus] – wyświetlanie czasu połączeń, statusu (wreszcie!!!)

Mail:

  • [plus] – search – mimo, że dodano go również w innych aplikacjach tu był najbardziej potrzebny

Safari:

  • [plus] – otwieranie linków w nowym tabie(och, jak mi tego brakowało!)
  • [plus] – nieco szybsze ładowanie stron, szybszy rendering i javascript
  • [plus] – pusty blank page po skasowaniu pojedyńczego taba
  • [minus] – kiedy wyłączając safari zostawimy blank page pokazuje się historia/zakładki – niby logiczne jednak mi to przeszkadza

iPod:

  • [plus] – shuffle on shake

Notatki głosowe:

  • [plus] – wszystko na swoim miejscu
  • [minus] – jedynym wyjątkiem od powyższego jest przycisk przejścia do zarządzania notatkami który równocześnie jest zatrzymaniem nagrywania – nieco nie logiczne.

Spotlight:

  • [plus] – działa szybko i indeksuje to co trzeba, wyświetla wyniki w logicznej kolejności

Kopiuj-wklej:

  • [plus] – kopuj-wklej jest bardzo fajnie rozwiązane i w praktyce działa nawet lepiej niż sprawiało to wrażenie na filmikach
  • [minus] – zaznaczenie białego tekstu na stronie www i wklejenie go w maila skutkuje efektem misia polarnego w zamieci śnieżnej (tekst można wkleić do notatnika a potem dopiero do maila ale chyba nie w tym rzecz)
  • [plus] – zawartość schowka zostaje po restarcie

Z pewnością po paru dniach używania zrobię update listy.

I wcale nie wyszło tak krótko;-)