CakePhp对$ this-> Form->输入的输出进行排序

时间:2014-02-21 09:19:10

标签: php cakephp

我查看了所有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

3 个答案:

答案 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);
}
  1. 从第一行输入中删除订单数组

  2. $ this-&gt; data ['User'] ['clanId']应为$ this-&gt; data ['User'] ['clan_id']

  3. 您必须为您的控制器分配订单。如果您按每个字段排序,则必须使用$this->Paginator->sort('clan_id');