2011-11-16 45 views
2

我正在使用Lift將一個快速CRUDify應用程序放在一起,並且我需要其中一個數據庫表的只讀訪問權限。您可以刪除Lift CRUDify表單上的「查看/編輯/刪除」鏈接嗎?

我研究瞭如何通過在導航菜單中將calcCreateItem設置爲Empty來刪除該表的「創建」選項。

但是,爲了使其成爲只讀,我還需要刪除該表的CRUDify表單中每行的「編輯」和「刪除」鏈接。我想繼續前進,並刪除「查看」鏈接,當我在它的時候(所有表格的字段已經顯示在列表表單中)...但是如果必須我可以使用「查看」鏈接。

有沒有人知道如何讓CRUDify「List」表格上的記錄不包含每行最右邊的「查看」/「編輯」/「刪除」鏈接?

回答

3

Kim的IfValue解決方案可能是最簡潔的,但可能不是最容易理解的新手。您也可以在您的實體上使用override def _showAllTemplate。它在Crudify特徵中定義如下,所以你可以刪除鏈接TD。請注意,即使鏈接未出現在模板中,它們仍然可以訪問,因此您需要將它們從SiteMenu中阻止。要做到這一點,如果你只是覆蓋菜單locs而不是calcCreateItem方法,那會更好。

override def createMenuLoc: Box[Menu] = Empty 
override def editMenuLoc: Box[Menu] = Empty 
override def viewMenuLoc: Box[Menu] = Empty 

def _showAllTemplate = 
<lift:crud.all> 
<table id={showAllId} class={showAllClass}> 
    <thead> 
    <tr> 
     <crud:header_item><th><crud:name/></th></crud:header_item> 
     <th>&nbsp;</th> 
     <th>&nbsp;</th> 
     <th>&nbsp;</th> 
    </tr> 
    </thead> 
    <tbody> 
    <crud:row> 
     <tr> 
     <crud:row_item><td><crud:value/></td></crud:row_item> 
     <td><a crud:view_href="">{S.??("View")}</a></td> 
     <td><a crud:edit_href="">{S.??("Edit")}</a></td> 
     <td><a crud:delete_href="">{S.??("Delete")}</a></td> 
     </tr> 
    </crud:row> 
    </tbody> 
    <tfoot> 
    <tr> 
     <td colspan="3"><crud:prev>{previousWord}</crud:prev></td> 
     <td colspan="3"><crud:next>{nextWord}</crud:next></td> 
    </tr> 
    </tfoot> 
</table> 

+0

謝謝!我讚賞其他答案,但是我誠實地說,我沒有得到它。當我搜索到更多的信息時,我發現的唯一的東西是[Kim的例子的確切源代碼](http://swtsrv02.cs.hs-rm.de/redmine/projects/we-smlt/repository/修訂版/ 13/diff/trunk/smlt/src/main/scala/de/hs_rm/cs/smlt/model/Exercise.scala)(!)...甚至在某個時刻顯然已經改變了。 –

0

您可以覆蓋editMenuLocParamsdeleteMenuLocParams刪除編輯和刪除鏈接。以下是我的一個項目的示例:

override def editMenuLocParams = 
    new Loc.IfValue[Exercise](deleteEditAllowed, errorAndRedirect _) :: 
    super.editMenuLocParams 

另請參閱scaladoc for Loc.IfValuedeleteEditAllowed是一個函數,它接受一個Mapper類的Box並返回一個指示是否允許編輯的布爾值。 errorAndRedirect有型號() ⇒ LiftResponse。它顯示錯誤並重定向。

+0

什麼是'deleteEditAllowed'和'errorAndRedirect'這裏? –