Alapból a doctrine OneToMany relation esetén order by desc rendezi a kapcsolódó értékeket, ami nem jó, ha például szeretnénk olyat csinálni, hogy listázzuk az elemeket, és a legrégebbit szeretnénk legelőre tenni.
OneToMany relation esetén az Entity-ben a következő módon lehet megadni azt, hogy milyen orderby-al töltse fel a kapcsolódó értékeket:
/**
* @ORM\OneToMany(targetEntity="Article", mappedBy="section")
* @ORM\OrderBy({"id" = "ASC"})
*/
protected $articles;
Ezáltal nem a default order by lesz, ami sok esetben nem a legjobb.
2012. augusztus 26., vasárnap
2012. augusztus 4., szombat
Data transformers
Egy izgi dolgot találtam.
Ha szeretnénk egy formba beírt értéket valamilyen másmilyen formába átalakítani mentés előtt, vagy szeretnénk elmenteni egy másik Entity-t, és nem szeretnénk select-et használni amit alapból nem lehet, mert az entity FieldType őse a choice field.
Ilyen esetekben jól jöhetnek a data transformerek, amiben átalakítjuk a felhasználó által megadott adatokat valami másra. ( pl entity esetén id-ból objektumot csinálunk).
Nekem elsőre nem kicsit gányolásnak tűnik, mivel át kell adnunk a saját Type-unknak az entity manager-t, ami elég furcsa.
http://symfony.com/doc/current/cookbook/form/data_transformers.html
Azt mondjuk elfelejtették beleírni, hogy ha a getDefaultOptions által visszaadott tömbben nincs benne az "em" kulcs, akkor kapunk egy exception-t.
Ha szeretnénk egy formba beírt értéket valamilyen másmilyen formába átalakítani mentés előtt, vagy szeretnénk elmenteni egy másik Entity-t, és nem szeretnénk select-et használni amit alapból nem lehet, mert az entity FieldType őse a choice field.
Ilyen esetekben jól jöhetnek a data transformerek, amiben átalakítjuk a felhasználó által megadott adatokat valami másra. ( pl entity esetén id-ból objektumot csinálunk).
Nekem elsőre nem kicsit gányolásnak tűnik, mivel át kell adnunk a saját Type-unknak az entity manager-t, ami elég furcsa.
http://symfony.com/doc/current/cookbook/form/data_transformers.html
Azt mondjuk elfelejtették beleírni, hogy ha a getDefaultOptions által visszaadott tömbben nincs benne az "em" kulcs, akkor kapunk egy exception-t.
Symfony2 és az ajax/json
Symfony2-ben a következő képpen lehet json-ben visszaadni a tartalmat:
public function indexAction()
{
$data = array();
$response = new Response(json_encode($data));
$response->headers->set('Content-Type', 'application/json');
return $response;
}
public function indexAction()
{
$data = array();
$response = new Response(json_encode($data));
$response->headers->set('Content-Type', 'application/json');
return $response;
}
Entity-ben datetime default értékének now()-ra állítása
Szenvedtem most azzal egy sort, hogy ha van egy Entity-m, aminek van egy datetime típusú mezője, akkor azt hogyan állítsam alapértelmezettben mostra.
A doctrine2 dokumentációjában ez van:
http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/cookbook/working-with-datetime.html
A megoldás symfony-ban az, hogy a construct-orba kell tenni egy alapértéket (aminek DateTime típusúnak kell lennie, now() nem jó). Sajnos annotation-be nem lehet beleírni ezt, pedig jó lenne, ha lehetne.
public function __construct()
{
$this->created = new \DateTime("now");
}
A doctrine2 dokumentációjában ez van:
http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/cookbook/working-with-datetime.html
A megoldás symfony-ban az, hogy a construct-orba kell tenni egy alapértéket (aminek DateTime típusúnak kell lennie, now() nem jó). Sajnos annotation-be nem lehet beleírni ezt, pedig jó lenne, ha lehetne.
public function __construct()
{
$this->created = new \DateTime("now");
}
2012. június 28., csütörtök
Itt egy egyszerű alap kód, a symfony2 használatára:
https://github.com/hangyagy/MyCMS/
- php annotation-t használ az entity-knél, ami mostmár támogatottab a yaml-ös változatnál
- van benne form
- a rooting az még yaml-ből megy, azt majd egyszer át kellene írni annotation-re, a controllerbe kellene átteni, valahogy így:
/**
* Page controller.
*
* @Route("/admin/page")
*/
class PageController extends Controller
https://github.com/hangyagy/MyCMS/
- php annotation-t használ az entity-knél, ami mostmár támogatottab a yaml-ös változatnál
- van benne form
- a rooting az még yaml-ből megy, azt majd egyszer át kellene írni annotation-re, a controllerbe kellene átteni, valahogy így:
/**
* Page controller.
*
* @Route("/admin/page")
*/
class PageController extends Controller
2011. augusztus 4., csütörtök
Symfony2 slide
Egy remek slide a symfony2 pár alaptulajdonságáról. Érdemes olvasni, elég sok lényeges dolog van benne.
http://www.slideshare.net/kriswallsmith/symfony2-tokyo
2011. május 9., hétfő
Symfony 2 hiányosság
Az új symfony-ból nekem egyelőre nagyon hiányzik egy admin generator alkalmatosság, mert jelenleg nincs semmilyen megoldás erre, a blogon azt írták, hogy lesz majd rá egy bundle, hát remélem minnél előbb lesz.
Feliratkozás:
Bejegyzések (Atom)