在SilverStripe中,我想在map
中使用DropdownField
时返回两个字段。
我有一个数据对象Teacher
,其中包含字段firstname
和lastname
。因此,在我的DropdownField
中,我想合并这两个字段并将其传递给map()
。
我目前的代码如下:
public function getCMSfields() {
$fields = FieldList::create(TabSet::create('Root'));
$fields->addFieldsToTab('Root.Main', array(
DropdownField::create('TeacherID', 'Teacher')->setSource(Teacher::get()->map('ID', 'Firstname'))->setEmptyString('Select one')
);
// etc...
return $fields;
}
如何合并firstname
和lastname
并将其传递到map()
并将其返回DropdownField
。
答案 0 :(得分:9)
我们可以在自定义(function(){
'use strict';
angular.module('myMenuApp.controllers')
.controller('HomeCtrl', [
'$rootScope',
'$log',
'$state',
'$timeout',
'$location',
'menu',
'$mdSidenav',
'$mdUtil',
function ($rootScope, $log, $state, $timeout, $location, menu, $mdSidenav, $mdUtil) {
var vm = this;
var aboutMeArr = ['Family', 'Location', 'Lifestyle'];
var budgetArr = ['Housing', 'LivingExpenses', 'Healthcare', 'Travel'];
var incomeArr = ['SocialSecurity', 'Savings', 'Pension', 'PartTimeJob'];
var advancedArr = ['Assumptions', 'BudgetGraph', 'AccountBalanceGraph', 'IncomeBalanceGraph'];
function isOpen(section) {
return menu.isSectionSelected(section);
};
function toggleOpen(section) {
menu.toggleSelectSection(section);
};
//handler to open/close a SideNav; when animation finishes report completion in console
function buildToggler(navID) {
return $mdUtil.debounce(function () {
$mdSidenav(navID).toggle();
}, 300);
};
//functions for menu-link and menu-toggle
vm.isOpen = isOpen;
vm.toggleOpen = toggleOpen;
vm.autoFocusContent = false;
vm.menu = menu;
vm.status = {
isFirstOpen: true,
isFirstDisabled: false
};
vm.toggleMenu = buildToggler('left');
}])
})();
中创建get函数,以返回我们喜欢的任何内容。这些get函数可以在很多地方使用,包括DataObject
函数。
以下是添加map
函数以在对象中返回getFullName
字符串的方法:
FullName
然后在我们的class Teacher extends DataObject {
// ...
public function getFullName() {
return $this->FirstName . ' ' . $this->LastName;
}
}
中,我们可以像这样获取DropdownField
:
Teacher::get()->map('ID', 'FullName')