2016-05-23 47 views
0

以我控制器I得到的阵列准备用于填充的输入字段的下拉值是这样的:在形式输入默认选择阵列的第二项的CakePHP 3

$this->loadModel('Meetings'); 

    $meetings_query = $this->Meetings->find('list', ['keyField' => 'id', 'valueField' => 'date']) 
      ->where(["Meetings.date >= " => date('Y-m-d') ]) 
      ->order(['Meetings.date' => 'ASC']); 

    $meetings_raw = $meetings_query->toArray(); 

    $meetings = array(); 

    foreach($meetings_raw as $key => $value){ 

     if(!empty($value)){ 
      $meetings[$key] = $value->format('Y-m-d'); 
     }   
    } 

这建立类似的阵列此:

Array ([26] => 2016-05-25 [22] => 2016-05-28 [23] => 2016-05-30) 

然后,它被显示为选择字段中的形式是这样的:

echo $this->Form->input('meeting_id', ['label' => 'Meeting']); 

的数组的第一项始终在下拉列表中预选。我想要实现的是默认情况下总是选择数组中的第二项。

这可能吗?

任何帮助或指导,非常感谢。

回答

1
// convert to array 
$a = $meetings->toArray(); 
// extract keys to new array 
// removes the first from the array 
$s = array_slice(array_keys($a),0); 

echo $this->Form->input('meeting_id', [ 
'label' => 'Meeting', 
'default' => array_shift($s) // use first value from sliced array 
]); 
+1

谢谢一堆。不幸的是,array_shift()出于某种原因没有工作,所以我不得不使用索引像$ s [1]。 – WpDoe

+0

@WpDoe我的一切都按照规定工作。你可以这样做'''$ d = array_shift($ s)''''''''default'=> $ d''':你的方法可能会导致错误,如果没有索引键, – Salines