• Save
Admin generator
Upcoming SlideShare
Loading in...5
×
 

Admin generator

on

  • 2,336 views

Symfony Admin Generator

Symfony Admin Generator

Statistics

Views

Total Views
2,336
Views on SlideShare
1,265
Embed Views
1,071

Actions

Likes
0
Downloads
0
Comments
0

3 Embeds 1,071

http://ricky.ez2.us 1066
http://webcache.googleusercontent.com 4
http://www.docseek.net 1

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Admin generator Admin generator Presentation Transcript

  • Symfony Admin Generator
  • Who am I
      Ricky 是我
    • http://ricky.ez2.us/
    • [email_address]
    • http://www.plurk.com/rickysu
  • 蝦米系 Admin Generator
  • Admin Generator 是一套快速的後台產生器
  • Admin Generator能作什麼?
    • 基本的資料增,刪,查,修。
    • 自訂的欄位呈現方式。
    • 使用者權限控管。
    • 透過修改 Config 就可以達到目的。
  • 準備動作
    • 下載Symfony。 http://www.symfony-project.org/installation/1_4
    • 下載Demo範例。 https://github.com/RickySu/RegisterDemo
    • 建議使用Netbeans作為ide工具。 http://netbeans.org/downloads/index.html
    • 保持清醒狀態。
  • 要開始一步一步動手做了
  • 請保持清醒
  • 過程很無趣 因為要打很多指令
  • 安裝Symfony
    • 建立專案目錄。 $ mkdir -p register/lib/vendor
    • 將symfony-1.4.x.tgz解壓縮擺到lib/vendor/symfony目錄底下。
    • 初始化專案。 $ lib/vendor/symfony/data/bin/symfony generate:project regist
  • 設定路徑
    • 網頁根目錄位於 web/
    • 切換到web目錄底下 $ cd web
    • 建立連結。 $ ln -sf ../lib/vendor/symfony/data/web/sf sf $ ln -sf ../lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web sfDoctrinePlugin
  • 建立App
    • 建立前台App $ ./symfony generate:app frontend
    • 建立後台App $ ./symfony generate:app backend
  • 設定DB
    • 設定DB連線參數 config/databases.yml
    • all: doctrine: class: sfDoctrineDatabase param: dsn: 'mysql:host=localhost;dbname=xxx' username: root password: xxxx attributes: default_table_collate: utf8_general_ci default_table_charset: utf8
  • 設定DB
    • 設定db schema: config/doctrine/schema.yml。
    • 由已存在的db產生schema.yml $ ./symfony doctrine:build-schema
    • 自行編輯schema.yml
  • 建立對應的Model
    • 建立對應的Model以及Form。 $ ./symfony doctrine:build --all
    • Symfony會重新建立DB Table。
    • 避免Symfony寫入DB,請改用 $ ./symfony doctrine:build --all-classes
  • 基本設定都完成了 可以開始建立後台
  • 建立後台
    • 建立member後台。 $ ./symfony doctrine:generate-admin --module=member backend member
    • 建立speaker後台。 $ ./symfony doctrine:generate-admin --module=speaker backend speaker
  • 後台建立完了
  • 檢視後台頁面
    • Member http://xxxx/backend.php/member
    • Speaker http://xxxx/backend.php/speaker
  • 開始中文化
      編輯apps/backend/config/setting.yml
    • 開啟i18n,以及預設語系為繁體中文。
    • all: i18n: true default_culture: zh_TW
    • 由於symfony會將語言設定紀錄在session中,修改完config後得關閉瀏覽器再開啟,或是清除cookie。
  • 開始翻譯欄位名稱
    • 編輯
    • apps/backend/modules/member/config/generator.yml
    • 修改 fields: 欄位
  • 保護好系統紀錄欄位
    • 資料的建立時間跟更新時間被亂改,這是不被允許的。
    • 解決方法,把這兩個欄位從form裡面拿掉。 修改lib/form/doctrine/MemberForm.class.php
    • 在configure method中加上 unset($this['created_at'],$this['updated_at']);
  • 深入探討generator.yml list區段管理的範圍 batch_actions title actions object_actions display
  • 深入探討generator.yml filter區段管理的範圍 display
  • 深入探討generator.yml new,edit區段管理的範圍 title display actions
  • 深入探討generator.yml
    • display欄位是有神秘功能的。
    • display: [=id,_name,email,~phone]
    • = > 幫這個欄位加上連結,導向edit頁面。
    • _ > 這個欄位會使用同名稱的 partial 樣板套入。
    • ~ > 這個欄位會使用 component 帶入。
  • 開始進入帳號控管了
  • 安裝Plugin
    • Symfony什麼不多,就是config跟plugin多。
    • sfDoctrineGuardPlugin 提供了認證,以及權限,群組的管理。
    • 安裝方法 $ ./symfony plugin:install sfDoctrineGuardPlugin
    • 重建Model,Form $ ./symfony doctrine:build --all
  • 開啟DoctrineGuard提供的模組
    • 編輯apps/backend/config/setting.yml
    • all:
    • enabled_modules: [default,sfGuardGroup, sfGuardUser, sfGuardPermission, sfGuardAuth] login_module: sfGuardAuth
    • login_action: signin
    • secure_module: sfGuardAuth
    • secure_action: secure
  • 變更預設的Session處理
    • 編輯apps/backend/lib/myUser.class.php
    • 修改myUser繼承自sfGuardSecurityUser
    • class myUser extends sfGuardSecurityUser
  • 開啟安全控管
    • 建立好管理員帳號後,接下來就是開啟安全控管,把沒有通過認證的統統踢出去。
    • 編輯apps/backend/config/security.yml
    • default:
    • is_secure: true
  • 建立預設的帳號
    • 建立一個管理員帳號,作為登入。 $ ./symfony guard:create-user email_address username password
  • 修改Routing
    • 修改apps/backend/config/routing.yml login: url: /login param: { module: sfGuardAuth, action: signin }logout: url: /logout param: { module: sfGuardAuth, action: signout }
  • sfDoctrineGuard提供的模組
    • 帳號管理 http://xxx/backend.php/sfGuardUser
    • 群組管理 http://xxx/backend.php/sfGuardGroup
    • 權限管理 http://xxx/backend.php/sfGuardPermission
  • Admin Generator 可依權限不同關閉刪除或編輯的選項
  • 需要有刪除權限才會顯示 需要有編輯權限才會顯示 需要有新增權限才會顯示 需要有其他權限才會顯示
  • 為generator.yml加上權限
    • 在actions,batch_actions, object_actions區段底下加上權限。
    • object_actions: _edit: credentials: [ MemberEdit,MemberAdmin ] _delete: credentials: [[ MemberDelete,MemberAdmin ]]
    • 具有 MemberEdit 和 MemberAdmin 權限的人才會看到編輯按鈕
    • 具有 MemberDelete 或 MemberAdmin 權限的人才會看到刪除按鈕
  • 加上權限後就一切安全了
  • 才怪
  • Admin Generator 只管樣版 直接打網址還是進的去
  • 記得修改 security.yml
  • 保護好每個action
    • apps/backend/modules/member/config/security.yml
    • all:
    • credentials: [MemberAccess]
    • edit:
    • credentials: [MemberEdit]
    • update:
    • credentials: [MemberEdit]
  • 覺得 Symfony 預設的樣式太難看了 ?
  • SfAdminDashPlugin 安裝他吧
  • 安裝sfAdminDashPlugin
    • 因為sfAdminDashPlugin還在beta,安裝步驟有點不同。
    • ./symfony plugin:install sfAdminDashPlugin --stability=beta –install_dep
    • 更新目錄soft link。
    • ./symfony plugin:publish-assets
  • 變更Layout
    • 編輯apps/backend/templates/layout.php
    • <body> <?php include_component('sfAdminDash','header')?> <?php echo $sf_content ?> <?php include_partial('sfAdminDash/footer')?> </body>
  • 啟用sfAdminDash
    • 編輯apps/backend/config/setting.yml enabled_modules: [default, sfAdminDash]
    • 變更首頁apps/backend/config/routing.yml
    • homepage: url: / param: { module: sfAdminDash, action: dashboard }
  • 編輯選單
    • 選單設定檔 apps/backend/config/app.yml
    • 內容請參考 RegisterDemo 的範例
  • 變更login
    • 編輯apps/backend/modules/sfGuardAuth/templates/signinSuccess.php <?php include_partial('sfAdminDash/login', array('form' => $form)); ?>
  • Thank You