Admin generator

2,492 views

Published on

Symfony Admin Generator

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,492
On SlideShare
0
From Embeds
0
Number of Embeds
1,075
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Admin generator

  1. 1. Symfony Admin Generator
  2. 2. Who am I <ul>Ricky 是我 <li>http://ricky.ez2.us/
  3. 3. [email_address]
  4. 4. http://www.plurk.com/rickysu </li></ul>
  5. 5. 蝦米系 Admin Generator
  6. 6. Admin Generator 是一套快速的後台產生器
  7. 7. Admin Generator能作什麼? <ul><li>基本的資料增,刪,查,修。
  8. 8. 自訂的欄位呈現方式。
  9. 9. 使用者權限控管。
  10. 10. 透過修改 Config 就可以達到目的。 </li></ul>
  11. 11. 準備動作 <ul><li>下載Symfony。 http://www.symfony-project.org/installation/1_4
  12. 12. 下載Demo範例。 https://github.com/RickySu/RegisterDemo
  13. 13. 建議使用Netbeans作為ide工具。 http://netbeans.org/downloads/index.html
  14. 14. 保持清醒狀態。 </li></ul>
  15. 15. 要開始一步一步動手做了
  16. 16. 請保持清醒
  17. 17. 過程很無趣 因為要打很多指令
  18. 18. 安裝Symfony <ul><li>建立專案目錄。 $ mkdir -p register/lib/vendor
  19. 19. 將symfony-1.4.x.tgz解壓縮擺到lib/vendor/symfony目錄底下。
  20. 20. 初始化專案。 $ lib/vendor/symfony/data/bin/symfony generate:project regist </li></ul>
  21. 21. 設定路徑 <ul><li>網頁根目錄位於 web/
  22. 22. 切換到web目錄底下 $ cd web
  23. 23. 建立連結。 $ ln -sf ../lib/vendor/symfony/data/web/sf sf $ ln -sf ../lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/web sfDoctrinePlugin </li></ul>
  24. 24. 建立App <ul><li>建立前台App $ ./symfony generate:app frontend
  25. 25. 建立後台App $ ./symfony generate:app backend </li></ul>
  26. 26. 設定DB <ul><li>設定DB連線參數 config/databases.yml
  27. 27. 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 </li></ul>
  28. 28. 設定DB <ul><li>設定db schema: config/doctrine/schema.yml。
  29. 29. 由已存在的db產生schema.yml $ ./symfony doctrine:build-schema
  30. 30. 自行編輯schema.yml </li></ul>
  31. 31. 建立對應的Model <ul><li>建立對應的Model以及Form。 $ ./symfony doctrine:build --all
  32. 32. Symfony會重新建立DB Table。
  33. 33. 避免Symfony寫入DB,請改用 $ ./symfony doctrine:build --all-classes </li></ul>
  34. 34. 基本設定都完成了 可以開始建立後台
  35. 35. 建立後台 <ul><li>建立member後台。 $ ./symfony doctrine:generate-admin --module=member backend member
  36. 36. 建立speaker後台。 $ ./symfony doctrine:generate-admin --module=speaker backend speaker </li></ul>
  37. 37. 後台建立完了
  38. 38. 檢視後台頁面 <ul><li>Member http://xxxx/backend.php/member
  39. 39. Speaker http://xxxx/backend.php/speaker </li></ul>
  40. 40. 開始中文化 <ul>編輯apps/backend/config/setting.yml <li>開啟i18n,以及預設語系為繁體中文。
  41. 41. all: i18n: true default_culture: zh_TW
  42. 42. 由於symfony會將語言設定紀錄在session中,修改完config後得關閉瀏覽器再開啟,或是清除cookie。 </li></ul>
  43. 43. 開始翻譯欄位名稱 <ul><li>編輯
  44. 44. apps/backend/modules/member/config/generator.yml
  45. 45. 修改 fields: 欄位 </li></ul>
  46. 46. 保護好系統紀錄欄位 <ul><li>資料的建立時間跟更新時間被亂改,這是不被允許的。
  47. 47. 解決方法,把這兩個欄位從form裡面拿掉。 修改lib/form/doctrine/MemberForm.class.php
  48. 48. 在configure method中加上 unset($this['created_at'],$this['updated_at']); </li></ul>
  49. 49. 深入探討generator.yml list區段管理的範圍 batch_actions title actions object_actions display
  50. 50. 深入探討generator.yml filter區段管理的範圍 display
  51. 51. 深入探討generator.yml new,edit區段管理的範圍 title display actions
  52. 52. 深入探討generator.yml <ul><li>display欄位是有神秘功能的。
  53. 53. display: [=id,_name,email,~phone]
  54. 54. = > 幫這個欄位加上連結,導向edit頁面。
  55. 55. _ > 這個欄位會使用同名稱的 partial 樣板套入。
  56. 56. ~ > 這個欄位會使用 component 帶入。 </li></ul>
  57. 57. 開始進入帳號控管了
  58. 58. 安裝Plugin <ul><li>Symfony什麼不多,就是config跟plugin多。
  59. 59. sfDoctrineGuardPlugin 提供了認證,以及權限,群組的管理。
  60. 60. 安裝方法 $ ./symfony plugin:install sfDoctrineGuardPlugin
  61. 61. 重建Model,Form $ ./symfony doctrine:build --all </li></ul>
  62. 62. 開啟DoctrineGuard提供的模組 <ul><li>編輯apps/backend/config/setting.yml
  63. 63. all:
  64. 64. enabled_modules: [default,sfGuardGroup, sfGuardUser, sfGuardPermission, sfGuardAuth] login_module: sfGuardAuth
  65. 65. login_action: signin
  66. 66. secure_module: sfGuardAuth
  67. 67. secure_action: secure </li></ul>
  68. 68. 變更預設的Session處理 <ul><li>編輯apps/backend/lib/myUser.class.php
  69. 69. 修改myUser繼承自sfGuardSecurityUser
  70. 70. class myUser extends sfGuardSecurityUser </li></ul>
  71. 71. 開啟安全控管 <ul><li>建立好管理員帳號後,接下來就是開啟安全控管,把沒有通過認證的統統踢出去。
  72. 72. 編輯apps/backend/config/security.yml
  73. 73. default:
  74. 74. is_secure: true </li></ul>
  75. 75. 建立預設的帳號 <ul><li>建立一個管理員帳號,作為登入。 $ ./symfony guard:create-user email_address username password </li></ul>
  76. 76. 修改Routing <ul><li>修改apps/backend/config/routing.yml login: url: /login param: { module: sfGuardAuth, action: signin }logout: url: /logout param: { module: sfGuardAuth, action: signout } </li></ul>
  77. 77. sfDoctrineGuard提供的模組 <ul><li>帳號管理 http://xxx/backend.php/sfGuardUser
  78. 78. 群組管理 http://xxx/backend.php/sfGuardGroup
  79. 79. 權限管理 http://xxx/backend.php/sfGuardPermission </li></ul>
  80. 80. Admin Generator 可依權限不同關閉刪除或編輯的選項
  81. 81. 需要有刪除權限才會顯示 需要有編輯權限才會顯示 需要有新增權限才會顯示 需要有其他權限才會顯示
  82. 82. 為generator.yml加上權限 <ul><li>在actions,batch_actions, object_actions區段底下加上權限。
  83. 83. object_actions: _edit: credentials: [ MemberEdit,MemberAdmin ] _delete: credentials: [[ MemberDelete,MemberAdmin ]]
  84. 84. 具有 MemberEdit 和 MemberAdmin 權限的人才會看到編輯按鈕
  85. 85. 具有 MemberDelete 或 MemberAdmin 權限的人才會看到刪除按鈕 </li></ul>
  86. 86. 加上權限後就一切安全了
  87. 87. 才怪
  88. 88. Admin Generator 只管樣版 直接打網址還是進的去
  89. 89. 記得修改 security.yml
  90. 90. 保護好每個action <ul><li>apps/backend/modules/member/config/security.yml
  91. 91. all:
  92. 92. credentials: [MemberAccess]
  93. 93. edit:
  94. 94. credentials: [MemberEdit]
  95. 95. update:
  96. 96. credentials: [MemberEdit] </li></ul>
  97. 97. 覺得 Symfony 預設的樣式太難看了 ?
  98. 98. SfAdminDashPlugin 安裝他吧
  99. 99. 安裝sfAdminDashPlugin <ul><li>因為sfAdminDashPlugin還在beta,安裝步驟有點不同。
  100. 100. ./symfony plugin:install sfAdminDashPlugin --stability=beta –install_dep
  101. 101. 更新目錄soft link。
  102. 102. ./symfony plugin:publish-assets </li></ul>
  103. 103. 變更Layout <ul><li>編輯apps/backend/templates/layout.php
  104. 104. <body> <?php include_component('sfAdminDash','header')?> <?php echo $sf_content ?> <?php include_partial('sfAdminDash/footer')?> </body> </li></ul>
  105. 105. 啟用sfAdminDash <ul><li>編輯apps/backend/config/setting.yml enabled_modules: [default, sfAdminDash]
  106. 106. 變更首頁apps/backend/config/routing.yml
  107. 107. homepage: url: / param: { module: sfAdminDash, action: dashboard } </li></ul>
  108. 108. 編輯選單 <ul><li>選單設定檔 apps/backend/config/app.yml
  109. 109. 內容請參考 RegisterDemo 的範例 </li></ul>
  110. 110. 變更login <ul><li>編輯apps/backend/modules/sfGuardAuth/templates/signinSuccess.php <?php include_partial('sfAdminDash/login', array('form' => $form)); ?> </li></ul>
  111. 111. Thank You

×