Здравейте, в тази статия ще ви покажем основните принципи за това как да генерирате “bundle” ( файлова структура ), “entity” ( клас взаимодействащ с определена таблица ) и “CRUD модул” ( създаване, редактиране, изтриване, показване на един запис отделно, списък ) за даден обект в Symfony 2. Symfony 2 e библиотека за програмиране на уеб сайтове, един от плюсовете на тази библиотека, е че може да се генерира код, който да улеснява програмиста в писането на дадения уеб сайт. По този начин да спестите много време и средства.
Генерирането става по зададена спецификация от клиента, не е готова функционалност, която можем да ползваме на всякъде.
Ако сте чели статията Симфони 2 – Инсталиране и конфигуриране вероятно имате инсталирана Symfony 2 библиотеката и можете да започнете работа с нея. Ако не сте я чели и не знаете как да си инсталирате библиотеката ви препоръчвам да започнете с нея. Мисля, че ще ви е полезна. Тази статия е и нещо като продължение на предишната и със следващата ще завършим програмирането на този малък уеб сайт, който ни служи като урок как да работим със Symfony 2.
Да предположим, че искате да създадете модул за управление на продукти. За целта трябва да имате Symfony 2 библиотеката инсталирана и конфигурирана свързана с база данни и с конкретна таблица “Product”. В “Product” таблицата можем да сложим като за начало няколко полета: id, name, description, price
. Бихме могли да добавим поле и за снимка, но тази функционалност ще разгледаме на по късен етап в друга статия.
Генериране и конфигуриране на Bundle структура в Симфони 2 уеб сайтове.
Първо трябва да създадем нова bundle структура, където ще се помества кода. Това става като отворите GIT Bash програмата, трябва да отидете в директорията на проекта, който разработвате. Това ще стане с команда:
cd /c/xampp/htdocs/Symfony

Сега можете да генерирате bundle структурата по следния начин:
php app/console generate:bundle

След въвеждане на тази команда системата ще ви пита за име на “bundle-a”, къде да се генерира, формат и структура. Този процес предоставя гъвкав избор с много възможности, което е уникално за Симфони 2. Също така има възможност, да зададете всички отговори и “bundle-a” да се генерира без да преминавате през процеса стъпка по стъпка. За целите на тази статия, ще разгледаме целия процес. След въвеждане на горната команда системата ще започне да ви задава въпроси:
Bundle namespace: Mol/StoreBundle

Bundle name: [MolStoreBundle]:
натискаме “ENTER”

Target directory [C:xampphtdocsSymfony/src]:
“ENTER”

Това е стандартната директория, просто натискаме “ENTER” от клавиатурата.
Configuration format ( yml, xml, php, or annotation) [annotation]

тука Симфони 2 ни предоставя възможност да изберем формата на конфигурационните файлове. Може да избираме между четири формата, за този проект ще ползваме ( yml ) който трябва да въведем от клавиатурата.
Do you want to generate the whole directory structure [no]?

Тук пишем “yes”, защото искаме да имаме цялата структура.
Do you confirm generation [yes]?
натискаме “ENTER”.

Confirm automatic update of your Kernel [yes]?
“ENTER”.

Confirm automatic update of the Routing [yes]?
“ENTER”.

Ако всичко е наред получаваме съобщението:
„You can now start using the generated code!“
Поздравления! Първата стъпка от създаването на модула във вашия уеб сайт е завършена. В момента ако отворите Symfony/src/Mol/ ще намерите файлова структура StoreBundle, която обаче все още няма entity и няма CRUD модул, с който да можем да управляваме продуктите.
Генериране на клас взаимодействащ с определена таблица в Симфони 2 проекти.
Сега започваме с втора стъпка, генериране на “Entity”.
Първата команда е:
php app/console doctrine:mapping:convert yml ./src/Mol/StoreBundle/Resources/config/doctrine/metadata/orm –-from-database --force

Тази команда създава entities от съществуваща база данни. Следващата команда е:
php app/console doctrine:mapping:import MolStoreBundle annotation

и
php app/console doctrine:generate:entities MolStoreBundle

След което имаме папка “Entity” с Product.php
файл, който съдържа Product
класа взаимодействащ с таблицата “Product” от базата данни.
Генериране и конфигуриране на CRUD модула в Симфони 2 проекти
Трета стъпка е създаването на самия CRUD модул. Командите за създаване на този модул позволяват голяма гъвкавост и предоставят различни възможности. Основната команда е:
php app/console/ generate:doctrine:crud

но също така имаме и няколко добавки като
„—entity=…“, “—route-prefix=…”, “—with-write”, “—format=…”
тези полета може да се попълнят по отделно или да се напишат наведнъж:
php app/console generate:doctrine:crud –-entity=MolStoreBundle:Product -–format=annotation –-with-write –-no-interaction

След което се очаква да получите съобщението
Generating the CRUD code: OK
Generating the Form code: OK
След това отиваме в src/Mol/StoreBundle/Resources/config/routing.yml и въвеждаме следния рутинг:
MolStoreBundle:
resource: "@MolStoreBundle/Controller/"
type: annotation
prefix: /
След този код всичко трябва да работи нормално!
Поздравления! Сега вече имате готов модул, чрез който да управлявате продуктите и втората част от изработката на уеб сайта, който е учебен, е готова.
http://localhost/Symfony/web/app_dev.php/product/ този линк трябва да работи локално и да ви зареди в уеб сайта ви списък с всички продукти, които имате в таблицата в базата данни. Целият този процес отнема около 5-10 мин. Ако трябва да се пише на ръка ще отнеме около ден-два в най-добрия случай или повече. Това е една от разликите между Симфони 2 и останалите библиотеки. Симфони 2 е изключително добра библиотека поради принципите и идеите заложени в нея и се развива с всяко обновяване на библиотеката. Симфони 2 улеснява процеса на работа, увеличава скоростта, поевтинява уеб сайта и го прави по-достъпен. Симфони 2 се използва предимно за изграждането на уеб сайтове, които са средни или много големи. Изключително гъвкава, бърза и много приятна за работа библиотека, Симофни 2 определено е правилния избор, който ние избираме за програмирането на уеб приложения и го препоръчваме и на вас!
I’ve been browsing online more than 4 hours today, yet I never found any interesting article like yours. It is pretty worth enough for me. In my view, if all webmasters and bloggers made good content as you did, the web will be a lot more useful than ever before.
very helpfull, thanx,…. i have a question though,… how or were do u edit the twig template for crud,…..