2012-07-04 56 views
2
  1. 使用PropertyAdmin該代碼擴展管理:索納塔管理包,如何使用實體庫類

    public function createQuery($context = 'list') 
    { 
    $user = $this->getConfigurationPool()->getContainer()->get('security.context')->getToken()->getUser(); 
    $query = $this->getModelManager()->createQuery($this->getClass(), 'o'); 
    $query->where('o.Creator=:creator')->setParameter("creator", $user); 
    return $query; 
    } 
    

我能夠限制「名單」的結果那些誰「屬於」記錄管理員即。唯一屬性(即一個實體)通過記錄的管理員創建。

問題: 通過手動更改URL(id值,如1,2 ...),我可以編輯屬於其他用戶的屬性。對於編輯操作,上面的查詢根本不被調用。如何改變這種行爲?

把查詢在控制器的2.Instead,我可以從PropertyRepository類取呢?這將保持邏輯模型,我可以寫單元測試。

3.我正在嘗試: ProductAdmin延伸AdminHelper {....} AdminHelper延伸管理員{....}

但它沒有說 「無法導入資源」 d:_development \ rent2 \應用/配置「,從 「d:。。?_development \ rent2 \應用程序/配置\ routing.yml中」

AdminHelper是抽象類,但仍然奏鳴曲讀它的任何解決方案

回答

9

1.A)使用ACL爲您對象,CRUD controller有權限檢查。

1.B)重新定義編輯操作,確保用戶嘗試編輯屬於他的財產,類似Page Admin Controller的東西,有創建行動重新定義

2)在控制器$這個 - > getConfigurationPool() - > getContainer() - >獲取( '主義') - > getRepository($這個 - >的getClass());使您可以訪問爲此模型註冊的存儲庫。大概很少有其他的方法來從它那裏得到的服務容器和實體管理器。

3)要建立管理類,你應該擴展索納塔管理員:docs for this,這個問題似乎並不奏鳴曲對於我來說是相關的。能否請您提供d內容:_development \ rent2 \應用程序/配置\ routing.yml中?

+0

1.好的,我會谷歌如何使用的權限檢查 2.我通過分析管理類解決了這個問題。它具有getObject($ id)方法,我在子類中繼承並解決了問題。 3.由於許多其他問題,我重新安裝了所有東西,現在它可以正常工作。老實說,我不知道如何,但我會保持它:) – Zeljko

+0

點2.真正幫助我:D – GusDeCooL