发布于 2014-09-14 15:27:17 | 202 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的Symfony 中文指南,程序狗速度看过来!

Symfony开源的PHP开发框架

Symfony是一个基于MVC模式的面向对象的PHP5框架。Symfony允许在一个web应用中分离事务控制,服务逻辑和表示层。


本文是symfony的简单应用示例,Symfony是一个基于MVC模式的面向对象的PHP5框架。Symfony允许在一个web应用中分离事务控制,服务逻辑和表示层。感兴趣的同学参考下.

1建立一个专案目录    symfony init-project 专案名

2创建一个程式        init-app 程式名

3创建一个模块框架    init-module 程式名 模块名 (需手动添加动作和摸版)

3设置虚拟主机


<VirtualHost 127.0.0.1>
    ServerAdmin website1@domain
    DocumentRoot "C:\www/web"
    ServerName www.phperz.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/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



最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务