2014-02-21 45 views
0

我已經看過所有的stackoverflow示例和CakePhp文檔。 但很顯然,我只是不夠聰明......

我的代碼是:

echo $this->Form->input('clan_id', array('label' => 'Clan', 'value' => $this->data['User']['clanId'], 'order' => array('clan_id' => 'asc'))); 

它的工作原理,但輸出是不是爲了:

<option value="1">clan5</option> 
<option value="2">clan2</option> 
<option value="3">clan21</option> 
<option value="4">clan15</option> 
<option value="5">clan8</option> 
... 

我要的是關閉當然:

<option value="1">clan2</option> 
<option value="2">clan5</option> 
<option value="3">clan8</option> 
<option value="4">clan15</option> 
<option value="5">clan21</option> 
... 

我試過多種東西: - 改變或在很多方面都德的發言。我不記得他們所有 - 試圖像the documentation

我發現輸入助手有沒有順序選項here 所以我猜我需要Set::sort或那裏工作我的代碼有問題。 (或者我只是不夠聰明) 希望有人能指出我正確的方向嗎?

我的SQL表結構:

1 id 
2 leaderId 
3 name 
4 tag 
5 website 
6 logo 
7 game_id 
8 mem_id 
9 game_name 
10 preference 

的ID在我用我的用戶表是clanId

回答

1

Controller使用$order varible:

$this->set('clans', $this->Clan->find('list', array('order' => array('name' => 'asc))); 

View

echo $this->Form->input('clan_id', array('label' => 'Clan', 'options' => $clans, 'value' => $this->data['User']['clan_id'])); 
+0

警告(2):ksort()期望參數1是數組,給出的字符串爲 – gelleby

+0

我更新了答案。你現在可以試試嗎? – cornelb

+0

我不明白我應該爲控制器添加代碼的位置,請你解釋一下嗎? – gelleby

0

Ofcourse,FormHelper::input這麼想的有順序的選擇。
使用Hash::sort代替Set::sort,如果你考慮到要排序,但更好的是在控制器分揀組變量前查看或模型

+0

請問你能舉一些例子嗎?因爲我無法找到任何有關工作示例的文檔。 – gelleby

0

如果您想對輸入的下拉列表進行排序,您必須從控制器進行排序。假設你想對用戶列表進行排序。從第一行輸入

public function user_list(){ 
    $users = $this->User->find('list'); 
    asort($users); 
    $this->set('users', $users); 
} 
  1. 刪除順序排列

  2. $這 - >數據[ '用戶'] [ 'clanId']應該是$這 - >數據[ '用戶'] [ 'clan_id']

您必須將命令分配到您的控制器中。如果你按照每個字段排序,你必須使用$this->Paginator->sort('clan_id');