我查看了所有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
答案 0 :(得分:1)
Controller
:
$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']));
答案 1 :(得分:0)
当然,FormHelper::input
没有订单选项
使用Hash::sort
代替Set::sort
,如果您想在视图中排序,但更好的是在设置变量之前在控制器中排序以查看或使用模型中的$order
变量
答案 2 :(得分:0)
如果要对下拉列表的输入进行排序,则必须从控制器进行。假设您要对用户列表进行排序。
public function user_list(){
$users = $this->User->find('list');
asort($users);
$this->set('users', $users);
}
从第一行输入中删除订单数组
$ this-&gt; data ['User'] ['clanId']应为$ this-&gt; data ['User'] ['clan_id']
您必须为您的控制器分配订单。如果您按每个字段排序,则必须使用$this->Paginator->sort('clan_id');