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
相關文章
相關標籤/搜索