我使用的代碼來自DataObjects as Pages 2,因此您可以爲admin中的產品選項卡下創建的每個產品選擇一個到多個類別。Silverstripe DataObjects as Pages第2部分教程 - 管理複選框
我的問題是如何顯示家長頁面(它被稱爲ProductsList.php)類別的標題?請看詳細圖片
或者這裏是解釋:因爲我的所有分類頁面都在一個或多個父母下,並且有些分類頁面在網站上重複,例如豐田和本田。我希望父母頁面的標題在類別複選框下顯示出售和出租,以便管理員知道選擇哪些重複類別。
下面是一些相關的代碼,類別複選框場:
//Relate to the category pages
static $belongs_many_many = array(
'Categories' => 'CategoryPage'
);
//Categories
$Categories = DataObject::get('CategoryPage');
$fields->addFieldToTab("Root.Categories", new CheckboxsetField('Categories', 'Categories', $Categories));
我試圖通過SS算出我的方式,所以任何幫助表示讚賞。
非常感謝。
山姆
編輯/更新:
我設法讓類別標籤顯示爲親子如銷售豐田,出售本田,租賃,寶馬,租賃豐田使用的代碼下面。然而,它們都是無序/隨機顯示的。關於如何正確分組他們的任何建議,例如,所有的銷售都在一起,所有的租賃在一起?
代碼:添加以下代碼CategoryPage.php
function CheckboxSummary(){
return $this->Parent()->Title . ' - ' . $this->Title;
}
並添加$分類 - >地圖( 'ID', 'CheckboxSummary'),以在Product.php
$Categories = DataObject::get('CategoryPage');
$fields->addFieldToTab("Root.Categories", new CheckboxsetField('Categories', 'Categories', $Categories->map('ID', 'CheckboxSummary')));
的checkboxset選項
謝謝:)
感謝Schellmax。我試過你的代碼,但是它出現了一個錯誤:「Uncaught Exception:Object - > __ call():xxx \ sapphire \ core \ Object的第724行的'DataObjectSet'中不存在方法'children'。 php我在你的代碼中添加的頁面是在Product Product.php的Product extends DataObject {}類中的。我該如何解決這個問題?還有人建議使用函數CheckboxSummary(){return $ this-> Parent() - > Title。 ' - '。 $ this-> Title;}但我不確定如何實現它。如果類別顯示如Sale-Toyota,Rental-Toyota如果更容易,我不介意。非常感謝您的幫助! :) – grumpypanda 2012-02-02 01:58:35
我的錯,對不起。你必須通過DataObject :: get_one替換DataObject :: get - 我已經更新了上面的代碼。 – schellmax 2012-02-02 07:26:49
謝謝S,我試過你的新代碼,但它只會顯示一個父代和它的子代類別(取決於我把代碼放在最後),例如只顯示Sale和它的子代,但不代表所有的父母和子代。但我設法展示父母子女,例如Sale-Toyota,Rental-Toyota,請參閱上面的編輯,但所有父母和類別都顯示無序,想法如何分組?不要擔心,如果它太複雜了,我只能忍受它。無論如何,非常感謝你的幫助!我非常感謝你爲我省下了你的時間。再次感謝! – grumpypanda 2012-02-03 01:57:12