Показаны сообщения с ярлыком Windows. Показать все сообщения
Показаны сообщения с ярлыком Windows. Показать все сообщения

понедельник, 25 февраля 2008 г.

Строим Blog на Symfony

Имеем:

  1. установленный XAMPP на Windows в каталоге C;\xampp;
  2. развернут framework Symfony;
  3. Apache22 поднят на localhost:80;
  4. пользователем MySQL5 является root с паролем 123;
  5. в php поднят PEAR.

Хотим:
  1. Создать проект на Symfony;
  2. Создать приложение Blog в проекте.


Дальше идет вольный пересказ наставления, взятого с symfony-project.org.

Создаём проект prod

Создаём каталог С:\xampp\htdocs\prod

  1. cd С:\xampp\htdocs\prod
  2. С:\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
Listen 89

  • Прегружаем httpd

  • Создаем приложения
  1. c:\xampp\htdocs\prod> symfony propel-generate-crud blog post Post
  2. c:\xampp\htdocs\prod> symfony propel-generate-crud blog comment Comment
  3. c:\xampp\htdocs\prod> symfony clear-cache

  • Проверяем работу

  1. http://localhost:89/blog_dev.php/post

  2. http://localhost:89/blog_dev.php/comment