2015-11-07 144 views
0

我正在使用奏鳴曲管理軟件包的symfony2項目。我在我的網站上有一些可編輯的文本,比如「演示文稿」,「實際上」等等......Symfony2最佳實踐可編輯文本奏鳴曲管理軟件包

我找到了一個解決方案,但並不覺得它是一種很好的方法。

我創建了一個實體EditableText,我映射與內容就象是一把鑰匙:

鍵=>「文稿」 內容=>「這是我的演講」

和我做同樣的爲我所有的EditableText。

這樣做會將我帶到我的奏鳴曲管理束中的EditableText列表,這對於非技術人員來說不是「用戶友好」的。如果他刪除一行,網站找不到內容...等等...

我想在奏鳴曲中有一個字段,用戶可以在某處編輯每個文本,但無法修改它們的密鑰或刪除一排或一些東西。

我不介意改變我的觀念。

如果您有任何建議,意見,...

感謝和我的英語很抱歉;)

+0

可能還會多一點的文脈融入爲什麼有一個密鑰存儲實體編輯(貌似?)單個詞的文本?如果它是[翻譯](http://symfony.com/doc/current/book/translation.html),那是一回事。如果是設置,則可能適合使用[Yaml]治療。或者一個實體(可能?)可能是合適的。從性能上看,在數據庫中將自己的單行文本片段放在一個數據庫中看起來並不是一個好主意,儘管我不知道這個實現。 –

+0

好吧,我會嘗試。我的網站由一些文本組成,如我的演示文稿,我實際上在做什麼等等。我希望這些文本可以在奏鳴曲管理包中編輯。我創建了一個名爲EditableText(字符串鍵,字符串內容)的實體,我把它作爲關鍵「演示文稿」,並作爲內容「我的演示文稿blablabla」。然後在我的控制器中,我詢問數據庫的EditableText有「演示」鍵,然後我可以加載內容,然後我可以加載它 – pcavalet

回答

1

如果你想保持你的理念,你可以通過使用限制爲編輯訪問基於角色的安全方法。您可以授予編輯the security section of the SonataAdminBundle documentation中所述的ROLES LIST,VIEW,EDIT。通過這種方式,管理員(您)可以爲您的網站創建具有所需密鑰的實體,編輯人員可以查看和更新​​它們。

舉個例子:當你已經確定你的管理服務爲 sonata.admin.editable_text

你必須分配角色

  • ROLE_SONATA_ADMIN_EDITABLE_TEXT_LIST
  • ROLE_SONATA_ADMIN_EDITABLE_TEXT_VIEW
  • ROLE_SONATA_ADMIN_EDITABLE_TEXT_EDIT

你可以比輕易地將這些角色將使用role_hierarchy指令的security配置的一個角色:

security: 
# ... 
role_hierarchy: 

    # group the roles for your convenience, 
    ROLE_SONATA_EDITOR: 
     - ROLE_SONATA_ADMIN_EDITABLE_TEXT_LIST 
     - ROLE_SONATA_ADMIN_EDITABLE_TEXT_VIEW 
     - ROLE_SONATA_ADMIN_EDITABLE_TEXT_EDIT 
+0

這是我的問題的一個很好的解決方案,謝謝! – pcavalet

相關問題