Symfony2 használata
Symfony kezeléséhez néhány konzolparancsot nézünk meg. |
|
A Symfony2-ben egy webalkalmazás csomagokból épül fel, amiket bundle-nak hívnak. Ezeket egyszerűen letudjuk generálni a következő paranccsal: # php app/console generate:bundle --namespace=Web/NewsBundle A Web/NewsBundle egy kitalált név, mindenki azt ír helyére amit akar. Az src mappán belül egy Web mappában fog készülni egy NewsBundle mappba és majd abba generálja a symfony2 a controllereket és egyéb szolgáltatások fájljait. Ha készítettünk egy adatbázist és annak a tábláit létrehoztuk, akkor szeretnénk gyorsan nekiugrani a fejlesztésnek. Ennek az egyik egyszerű módja az, ha használjuk a symfony2 beépített generátorait. Az adatbázist letudjuk képezni pár parancs kiadásával és tudunk egy grafikus felületet generálni neki. Először xml fájlokat fogunk generálni a \src\Web\NewsBundle\Resources\config\doctrine\ mappába, ahol létrejön így az orm modell. Majd legeneráljuk az entitásokat a \src\Web\NewsBundle\Entity\ mappába. A generálás közben kérdéseket fog feltenni, azokra értelemszerűen kell válaszolni, mindent kiír, hogy mit szeretne :) $ php app/console doctrine:mapping:import --force WebNewsBundle xml $ php app/console doctrine:mapping:convert annotation ./src $ php app/console doctrine:generate:entities Web\NewsBundle Ha pl enum típusú mező van az adatbázisban, akkor bekell állítani az app/config/config.yml fájlban a következő sorokat és utána már sikerülni fog az importálás: doctrine: dbal: mapping_types: enum: string Meg is van az alkalmazásunk adatbázis modelje. A következő paranccsal már egy egyszerű felületet fogunk generálni, ahol majd fogjuk tudni módosítani az adatbázisban lévő adatainkat. $ php app/console generate:doctrine:crud Ezzel létrejön \src\Web\NewsBundle\ mappán belül a Controller, a Form, Resource-on belül a Views és a config mappában a routing fájl is módosult, plusz még pár dolog, ami elsőre nem annyira érdekes :) Ha most megnézzük a böngészőben az eredményt, akkor előfordulhat, hogy csúnya hibaüzenetet kapunk, ha idegen kulcsokat is alkalmaztunk az adatbázisunkban. A generálás során kimaradt(mert lusták voltak a symfony fejlesztői) a __toString() metódust, mely átadja az idegen kulcs legördülő menüjének (szerkesztéskor) a listát, ezért pótolnunk kell. Abban az entity osztályba kell írnunk, amelyikre mutat az idegenkulcs. pl: Web\NewsBundle\Entity\Users.php: ... public function __toString() { return $this->username; } ... A symfony2-ben az alkamazásaink, url-jeit(routing listáját) a következő paranccsal ellenőrizhetjük: # php app/console router:debug Itt látnunk kell az előbb generált felületünk elérési útját is. Írjuk be a böngészőbe és örüljünk :) Előfordulhat, hogy szeretnénk mások által készített csomagokat is használni. Ezeket a composerrel fogjuk telepíteni. A symfony2 gyökerében található egy composer.json nevű fájl, telepítsünk fel egy media-bundle-t. A composer.json fájlban így módosítsunk: "require": { ... "symfony-cmf/media-bundle": "1.2.0" } Majd adjuk ki a következő parancsot: # php composer.phar require symfony-cmf/media-bundle vagy # composer require symfony-cmf/media-bundle Composerrel telepített bundle-k eltávolítása: - composer.json-ból töröljük a sorokat - # composer update parancsot adjuk ki - AppKernel.php, config.yml, routing.yml -ból töröljük a felesleges sorokat. Időnként nem árthat frissíteni magát a keretrendszert is. Már csak azért, mert javíthatnak bugokat vagy biztonsági hibákat. A composer.json-ban átkell írni a symfony verziószámát, majd a következő parancsokkal próbálkozhatunk frissíteni: # composer self-update # composer update # composer update symfony/symfony Segédanyagok: http://nyukapiszka.wordpress.com/2011/08/06/symfony-2-telepites-bundle-keszites-crud-alapok-es-egyebek-minden-az-egyben/ https://www.youtube.com/watch?v=PONJajuH8P4 https://www.youtube.com/watch?v=ejkTBMQvn3k http://symfony.com/doc/current/book/doctrine.html http://tutorial.symblog.co.uk/docs/configuration-and-templating.html https://github.com/dsyph3r/symblog http://symblog.co.uk/ http://www.sitepoint.com/building-web-app-symfony-2-development/ |
2014.11.26. |
Figyelem! Az itt olvasható leírások, nem teljesek és nem biztos, hogy pontosak. Nem
frissülnek folyamatosan, ezért nem mindegyik használható az aktuális verziójú rendszerekben. Mindenki saját
felelősségére használja az itt található ötleteket. Az esetleges károkért nem vállalunk felelősséget.