Имеем:
- установленный XAMPP на Windows в каталоге C;\xampp;
- развернут framework Symfony;
- Apache22 поднят на localhost:80;
- пользователем MySQL5 является root с паролем 123;
- в php поднят PEAR.
Хотим:
- Создать проект на Symfony;
- Создать приложение Blog в проекте.
Дальше идет вольный пересказ наставления, взятого с symfony-project.org.
Создаём проект prod
Создаём каталог С:\xampp\htdocs\prod
- cd С:\xampp\htdocs\prod
- С:\xampp\htdocs\prod> symfony init-project prod
Создаём приложение blog
- С:\xampp\htdocs\prod> symfony init-app blog
Проектируем базу данных prod, содержащую две таблицы post и comment
- Редактируем файл С:\xampp\htdocs\prod\config\schema.yml:
propel:
post:
id: ~
title: varchar(255)
excerpt: longvarchar
body: longvarchar
created_at: ~
comment:
id: ~
post_id: ~
author: varchar(255)
email: varchar(255)
body: longvarchar
created_at: ~
Генерим модель, т.е. class Post и class Comment, которые появятся в E:\xampp\htdocs\prod\lib\model
- С:\xampp\htdocs\prod> symfony propel-build-model
Генерим базу данных
- С:\xampp\htdocs\prod> symfony propel-build-sql
Получаем скрипт E:\xampp\htdocs\prod\data\sql\lib.model.schema.sql
SET FOREIGN_KEY_CHECKS = 0;
#-----------------------------------------------------------------------------
#-- post
#-----------------------------------------------------------------------------
DROP TABLE IF EXISTS `post`;
CREATE TABLE `post`
(
`id` INTEGER NOT NULL AUTO_INCREMENT,
`title` VARCHAR(255),
`excerpt` TEXT,
`body` TEXT,
`created_at` DATETIME,
PRIMARY KEY (`id`)
)Type=MyISAM;
#-----------------------------------------------------------------------------
#-- comment
#-----------------------------------------------------------------------------
DROP TABLE IF EXISTS `comment`;
CREATE TABLE `comment`
(
`id` INTEGER NOT NULL AUTO_INCREMENT,
`post_id` INTEGER,
`author` VARCHAR(255),
`email` VARCHAR(255),
`body` TEXT,
`created_at` DATETIME,
PRIMARY KEY (`id`),
INDEX `comment_FI_1` (`post_id`),
CONSTRAINT `comment_FK_1`
FOREIGN KEY (`post_id`)
REFERENCES `post` (`id`)
)Type=MyISAM;
# This restores the fkey checks, after having unset them earlier
SET FOREIGN_KEY_CHECKS = 1;
Создаем базу данных prod
- http://localhost/phpmyadmin/
Редактируем права доступа к базе
- c:\xampp\htdocs\prod\config\databases.yml
all:
propel:
class: sfPropelDatabase
param:
dsn: mysql://root:123@localhost/prod
- c:\xampp\htdocs\prod\config\propel.ini
propel.targetPackage = lib.model
propel.packageObjectModel = true
propel.project = prod
propel.database = mysql
propel.database.createUrl = mysql://root:123@localhost/
propel.database.url = mysql://root:123@localhost/prod
- Наполняем базу данных
С:\xampp\htdocs\prod> symfony propel-insert-sql
Создаем виртуальный хост для проекта
- С:\xampp\apache\conf\extra\httpd-vhosts.conf
<Directory "c:/xampp/php/pear/data/symfony/web/sf">
Allow from All
</directory>
<virtualhost>
DocumentRoot "c:/xampp/htdocs/prod/web"
DirectoryIndex index.php
Alias /sf "c:/xampp/php/pear/data/symfony/web/sf"
<directory>
AllowOverride All
Order deny,allow
Allow from all
</directory>
</virtualhost>
- С:\xampp\apache\conf\httpd.conf
- Прегружаем httpd
- Создаем приложения
- c:\xampp\htdocs\prod> symfony propel-generate-crud blog post Post
- c:\xampp\htdocs\prod> symfony propel-generate-crud blog comment Comment
- c:\xampp\htdocs\prod> symfony clear-cache
- Проверяем работу
- http://localhost:89/blog_dev.php/post
-
http://localhost:89/blog_dev.php/comment