2011-10-12 67 views
3

我正在用CodeIgniter構建一個CMS,並且我很難理解處理各種CRUD視圖的最佳方法。鑑於我的網址類似於...CodeIgniter CRUD查看抽象

mydomain.com/admin/app/content/pages/edit

...其中「管理員」是我的控制器和「應用」是我的操作方法,我目前地圖段3,4,5到實際的目錄/文件,就像這樣:

/views 
    /admin 
     /content 
      /pages 
       list_view.php 
       edit_view.php 
       add_view.php 
      /banners 
       list_view.php 
       edit_view.php 
       add_view.php 

一個需要注意的是,我需要調用根據不同的非CRUD模型方法上的頁面被調用,所以我app()動作方法開始有一個討厭的if..else塊。另外,由於表格數據不同,每個部分的視圖都會有所不同,所以我不知道如何避免出現一堆視圖頁面。顯然,所有這一切的缺點是1)我重複了很多代碼,並且2)如果我添加一個新的管理部分,我必須在物理上創建一大堆新的目錄並添加一個新的部分給if ...別的塊。

所以我的問題是:

  1. 我怎樣才能減少目錄和我創建視圖頁面的數量?
  2. 方法list_fields() or field_data()是否適用於任何自動化?

我有一個想法是輪廓我與交互的表,創建一個動態關聯數組定義的字段我要揭露以及它應該是形式元素的類型,然後傳遞以共同的觀點。思考?缺陷?

謝謝!

回答

3

雖然我明白這一點可能不會直接回答你的問題,它可以爲您提供基礎上設計您的CRUD。我已經使用了GroceryCRUD很長一段時間了,對於基本的和高級的CRUD操作,它幾乎發誓。它的設計和構建非常好,除了定製的文件結構之外,它似乎可以提供您所需要的所有功能。 CRUD可以很容易地修改,以結合你正在尋找的文件/網址結構。

@ see http://www.grocerycrud.com/

+0

太好了,謝謝。實際上,我剛剛在一個小時前發現了GroceryCRUD,並開始潛入。我會趕上你,但還沒有足夠的代表。 :) – Marlorn

+0

得到一些代表;)GroceryCRUD是太棒了。只是要小心,不要過分依賴CRUD。他們都很好,很好的開發,但我經常發現我的應用程序超過了CRUD,我最終需要正確地開發它。Grocery的更高版本雖然很好 - 可用的回調和上傳等等。1-many和1-1關係也不錯。祝你的項目好運。 –

+0

剛剛查看了我的舊帖子,發現任何未回覆的帖子 - 即使您無法順利登錄,您也可以接受答案。 –

1

您可以extend CI_Model並使用一些reflection函數,如getProperties()來幫助您的通用CRUDs。結合CI的list_fields()就像你提到的那樣,你可以創建一些通用頁面來實現這一點。

可以處理表單數據的任何對象的例子可能是

function processForm() { 
    $props = $this->self->getProperties(ReflectionProperty::IS_PUBLIC); 
    foreach ($props as $prop) : 
     $prop->setValue($this,$this->input->post($prop->getName())); 
    endforeach; 
} 

其中

$this->self = new ReflectionClass($this); 
+0

太好了,謝謝。我並不熟悉反思(但),但我會研究它。我喜歡你,但還沒有足夠的代表。 :) – Marlorn

+0

當你想要編寫可重複使用的代碼時,絕對有用的東西。 – dispake