symfony框架简单流程
1建立一个专案目录 symfony init-project 专案名
2创建一个程式 init-app 程式名
3创建一个模块框架 init-module 程式名 模块名 (需手动添加动作和摸版)
3设置虚拟主机
<VirtualHost 127.0.0.1>
ServerAdmin website1@domain
DocumentRoot "C:\www/danfei/web"
ServerName www.danfei.com
ErrorLog logs/www.sandbox.com-error_log
CustomLog logs/www.sandbox.com_log common
Alias /sf "C:\program files/php/PEAR/pear/data/symfony/web/sf"
<Directory "C:\www/danfei/web">
AllowOverride All
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
<Directory "C:\program files/php/PEAR/pear/data/symfony/web/sf">
AllowOverride All
Order deny,allow
Allow from all
</Directory>
5数据库连接结构 databases.yml
连接数据库的配置文件
修改config/databases.yml,其param:下的参数部分分别为:
phptype: 要使用的数据库类型
hostspec: 要用的数据库所在的域名
database: 要使用的数据库的名字
username: 连接数据库所用的用户名
password: 连接数据库所用的密码
2 修改config/propel.ini,所需要修改的部分如下:
propel.database: 需要使用的数据库类型
propel.database.createUrl: 需要使用的数据库所在的主机地址,其格式为mysql://username:password@domain/,分别为用户名,密码以及域名
propel.database.url: 需要使用的数据库的地址,其格式为:mysql://username:password@domain/database,分别为用户名,密码以及数据库的名字
all:
propel:
class: sfPropelDatabase
param:
phptype: mysql
host: localhost
database: danfei
username: root
password: root
6数据表模结构 schema.yml
propel:
question:
_attributes: { phpName: Question }
id:
user_id: { type: integer, foreignTable: user, foreignReference: id }
title: { type: longvarchar, required: true }
body: { type: longvarchar, required: true }
created_at:
updated_at:
answer:
_attributes: { phpName: Answer }
id:
question_id: { type: integer, foreignTable: question, foreignReference: id }
user_id: { type: integer, foreignTable: user, foreignReference: id }
body: { type: longvarchar }
created_at:
user:
_attributes: { phpName: User }
id:
nickname: { type: varchar(50), required: true, index: true }
first_name: { type:varchar(100) }
last_name: { type:varchar(100) }
created_at:
interest:
_attributes: { phpName: Interest }
question_id: { type: integer, foreignTable: question, foreignReference: id }
user_id: { type: integer, foreignTable: user, foreignReference: id }
created_at:
relevancy:
_attributes: { phpName: Relevancy }
answer_id: { type: integer, foreignTable: answer, foreignReference: id }
user_id: { type: integer, foreignTable: user, foreignReference: id }
score: { type: integer }
created_at:
7物件模型建立 propel-build-model
8数据SQL生成 propel-build-sql
9数据表插入 propel-insert-sql
10动作程式框架生成 propel-generate-crud front question Question(自动生成一个默认的动作和摸版)
11外观界面 apps/frontend/templates/layout.php
12页面修改与CSS加载 frontend/config/view.yml
13清除缓存 symfony cc
14重制定默认主页 apps/frontend/config/routing.yml homepage:
15动作数据传递模版 apps/frontend/modules/程式/actions/actions.class.php
16表单验证
methods:
post: [author, email, body]
get: [author, email, body]
fillin:
enabled: on
names:
author:
required: Yes
required_msg: 作者不能为空
email:
required: No
validators: emailValidator
body:
required: No
validators: emailValidator
emailValidator:
class: sfEmailValidator
param:
email_error: 电子邮件地址不正确
17动作页面 Action结尾 摸版页面 Success结尾
18由一个CRUD生成器创建的动作列表如下:
名字 描述
list 显示一个数据表的所有记录
index 转向到list
show 显示一个指定记录的所有数据域
edit 显示一个表单来创建一个新的记录或是编辑一个已存在的记录
update 通过在请求中指定的参数来修改一个记录,然后转向到show
delete 从数据表中删除一个指定的记录
19数据导入
在askeet/data/fixtures/下创建新test data file(你需要手动创建目录)
在askeet/batch/下建立一个文件load_data.php:
define('SF_ROOT_DIR', realpath(dirname(__FILE__).'/..'));
define('SF_APP', 'frontend');
define('SF_ENVIRONMENT', 'dev');
define('SF_DEBUG', true);
require_once(SF_ROOT_DIR.DIRECTORY_SEPARATOR.'apps'.DIRECTORY_SEPARATOR.SF_APP.DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'config.php');
$databaseManager = new sfDatabaseManager();
$databaseManager->initialize();
$data = new sfPropelData();
$data->setDeleteCurrentData(false); //不加此项将在导入时先删除之前的数据
$data->loadData(sfConfig::get('sf_data_dir').DIRECTORY_SEPARATOR.'fixtures');
20动作方法的名字总是execute'Xxx'()的形式,其中名字的第二部分是动作的名字,并且第一个字母大写。
21.app下的setting.yml
修改apps\frontend\config\settings.yml里的内容参数为off:
prod:
.settings:
no_script_name: off
2创建一个程式 init-app 程式名
3创建一个模块框架 init-module 程式名 模块名 (需手动添加动作和摸版)
3设置虚拟主机
<VirtualHost 127.0.0.1>
ServerAdmin website1@domain
DocumentRoot "C:\www/danfei/web"
ServerName www.danfei.com
ErrorLog logs/www.sandbox.com-error_log
CustomLog logs/www.sandbox.com_log common
Alias /sf "C:\program files/php/PEAR/pear/data/symfony/web/sf"
<Directory "C:\www/danfei/web">
AllowOverride All
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
<Directory "C:\program files/php/PEAR/pear/data/symfony/web/sf">
AllowOverride All
Order deny,allow
Allow from all
</Directory>
5数据库连接结构 databases.yml
连接数据库的配置文件
修改config/databases.yml,其param:下的参数部分分别为:
phptype: 要使用的数据库类型
hostspec: 要用的数据库所在的域名
database: 要使用的数据库的名字
username: 连接数据库所用的用户名
password: 连接数据库所用的密码
2 修改config/propel.ini,所需要修改的部分如下:
propel.database: 需要使用的数据库类型
propel.database.createUrl: 需要使用的数据库所在的主机地址,其格式为mysql://username:password@domain/,分别为用户名,密码以及域名
propel.database.url: 需要使用的数据库的地址,其格式为:mysql://username:password@domain/database,分别为用户名,密码以及数据库的名字
all:
propel:
class: sfPropelDatabase
param:
phptype: mysql
host: localhost
database: danfei
username: root
password: root
6数据表模结构 schema.yml
propel:
question:
_attributes: { phpName: Question }
id:
user_id: { type: integer, foreignTable: user, foreignReference: id }
title: { type: longvarchar, required: true }
body: { type: longvarchar, required: true }
created_at:
updated_at:
answer:
_attributes: { phpName: Answer }
id:
question_id: { type: integer, foreignTable: question, foreignReference: id }
user_id: { type: integer, foreignTable: user, foreignReference: id }
body: { type: longvarchar }
created_at:
user:
_attributes: { phpName: User }
id:
nickname: { type: varchar(50), required: true, index: true }
first_name: { type:varchar(100) }
last_name: { type:varchar(100) }
created_at:
interest:
_attributes: { phpName: Interest }
question_id: { type: integer, foreignTable: question, foreignReference: id }
user_id: { type: integer, foreignTable: user, foreignReference: id }
created_at:
relevancy:
_attributes: { phpName: Relevancy }
answer_id: { type: integer, foreignTable: answer, foreignReference: id }
user_id: { type: integer, foreignTable: user, foreignReference: id }
score: { type: integer }
created_at:
7物件模型建立 propel-build-model
8数据SQL生成 propel-build-sql
9数据表插入 propel-insert-sql
10动作程式框架生成 propel-generate-crud front question Question(自动生成一个默认的动作和摸版)
11外观界面 apps/frontend/templates/layout.php
12页面修改与CSS加载 frontend/config/view.yml
13清除缓存 symfony cc
14重制定默认主页 apps/frontend/config/routing.yml homepage:
15动作数据传递模版 apps/frontend/modules/程式/actions/actions.class.php
16表单验证
methods:
post: [author, email, body]
get: [author, email, body]
fillin:
enabled: on
names:
author:
required: Yes
required_msg: 作者不能为空
email:
required: No
validators: emailValidator
body:
required: No
validators: emailValidator
emailValidator:
class: sfEmailValidator
param:
email_error: 电子邮件地址不正确
17动作页面 Action结尾 摸版页面 Success结尾
18由一个CRUD生成器创建的动作列表如下:
名字 描述
list 显示一个数据表的所有记录
index 转向到list
show 显示一个指定记录的所有数据域
edit 显示一个表单来创建一个新的记录或是编辑一个已存在的记录
update 通过在请求中指定的参数来修改一个记录,然后转向到show
delete 从数据表中删除一个指定的记录
19数据导入
在askeet/data/fixtures/下创建新test data file(你需要手动创建目录)
在askeet/batch/下建立一个文件load_data.php:
define('SF_ROOT_DIR', realpath(dirname(__FILE__).'/..'));
define('SF_APP', 'frontend');
define('SF_ENVIRONMENT', 'dev');
define('SF_DEBUG', true);
require_once(SF_ROOT_DIR.DIRECTORY_SEPARATOR.'apps'.DIRECTORY_SEPARATOR.SF_APP.DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'config.php');
$databaseManager = new sfDatabaseManager();
$databaseManager->initialize();
$data = new sfPropelData();
$data->setDeleteCurrentData(false); //不加此项将在导入时先删除之前的数据
$data->loadData(sfConfig::get('sf_data_dir').DIRECTORY_SEPARATOR.'fixtures');
20动作方法的名字总是execute'Xxx'()的形式,其中名字的第二部分是动作的名字,并且第一个字母大写。
21.app下的setting.yml
修改apps\frontend\config\settings.yml里的内容参数为off:
prod:
.settings:
no_script_name: off