Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php SilverStripe LookupField始终显示";(无)“;_Php_Silverstripe - Fatal编程技术网

Php SilverStripe LookupField始终显示";(无)“;

Php SilverStripe LookupField始终显示";(无)“;,php,silverstripe,Php,Silverstripe,使用SilverStripe 3.1,我试图让一个表单显示一个特定的、预先选择的值,而不是一个下拉列表。由于文档表明LookupField适用于这种情况,我尝试使用它,但是无论我做什么,它总是显示(无),而不是我传递的值。似乎没有人遇到过这样的问题,因为谷歌没有提供任何有用的东西。要么这样,要么我在使用谷歌时失败 $fields = new FieldList(...); // $user is Contact (a DataObject) or null if ($user == null)

使用SilverStripe 3.1,我试图让一个表单显示一个特定的、预先选择的值,而不是一个下拉列表。由于文档表明LookupField适用于这种情况,我尝试使用它,但是无论我做什么,它总是显示(无),而不是我传递的值。似乎没有人遇到过这样的问题,因为谷歌没有提供任何有用的东西。要么这样,要么我在使用谷歌时失败

$fields = new FieldList(...);
// $user is Contact (a DataObject) or null
if ($user == null) {
    $raw = DataObject::get('Contact', 'mayContact = 1', 'sortOrder ASC');
    $list = array();
    foreach ($raw as $item) {
        $list[$item->ID] = $item->name . (empty($item->rank) ? '' : ' (' . $item->rank . ')');
    }
    $sel = new DropdownField('contact', 'Contact', $list);
} else {
    $list = array();
    $list[$user->ID] = $user->name . (empty($user->rank) ? '' : ' (' . $user->rank . ')');
    $sel = new LookupField('contact', 'Contact', $list);
}
$fields->insertBefore($sel, 'Name');
return new Form($this, 'contactForm', $fields, new FieldList(FormAction::create('send')));
在我看来,它应该显示一个特定的联系人姓名(可能还有排名),我传递的数组与创建的数组相同,唯一的区别是当
$user
为空时,它只有一个条目而不是多个条目


我可能应该提到,我显然仍然需要在提交表单时传递的值。

您需要为字段设置一个值,而不仅仅是一个源。该值是构造函数的第四个参数,因此需要类似以下内容:

$sel=newlookupfield('contact','contact',$list,$user->ID);