0

不确定这是否是满足我需要的最佳方式,但这是我的问题。在我的编辑功能视图中,我根据其中的内容重新创建表单字段,$this->data->expense但我需要数组按特定顺序排列,否则字段会以错误的顺序生成。这是我拥有的数组:

'Expense' => array(
    (int) 0 => array(
        'id' => '98',
        'date' => '2012-08-23',
        'sitename' => '123',
        'detail' => 'Breakfast',
        'amount' => '100.00',
        'miles' => null,
        'total' => '100.00',
        'expense_claim_id' => '63',
        'created' => '2012-08-23 09:08:52',
        'modified' => '2012-08-23 09:08:52',
        'ExpenseClaim' => array(
            'id' => '63',
            'user_id' => '3',
            'claim_status_id' => '1',
            'created' => '2012-08-23 09:08:52',
            'modified' => '2012-08-23 10:14:10',
            'approved' => false,
            'approved_by' => '0',
            'date_submitted' => '2012-08-23 09:08:52'
        ),
        'ExpenseCode' => array(
            (int) 0 => array(
                'id' => '1',
                'name' => 'Plane fare',
                'code' => '1',
                'created' => '2012-07-31 09:52:02',
                'modified' => '2012-07-31 09:53:57'
            )
        )
    ),

这就是我需要订购它的方式(ExpenseCode)出现在更高的位置:

'Expense' => array(
    (int) 0 => array(
        'id' => '98',
        'date' => '2012-08-23',
        'sitename' => '123',
        'detail' => 'Breakfast',
        'ExpenseCode' => array(
            (int) 0 => array(
                'id' => '1',
                'name' => 'Plane fare',
                'code' => '1',
                'created' => '2012-07-31 09:52:02',
                'modified' => '2012-07-31 09:53:57'
            )
        ),
                    'amount' => '100.00',
        'miles' => null,
        'total' => '100.00',
        'expense_claim_id' => '63',
        'created' => '2012-08-23 09:08:52',
        'modified' => '2012-08-23 09:08:52',
        'ExpenseClaim' => array(
            'id' => '63',
            'user_id' => '3',
            'claim_status_id' => '1',
            'created' => '2012-08-23 09:08:52',
            'modified' => '2012-08-23 10:14:10',
            'approved' => false,
            'approved_by' => '0',
            'date_submitted' => '2012-08-23 09:08:52'
        )
    ),

我怎样才能做到这一点,并且在我发布时改变它的结构会影响蛋糕吗?

4

2 回答 2

1

据我所知,CakePHP 没有内置函数来自定义对数组进行排序。我想你将不得不用纯 PHP 来做到这一点。https://stackoverflow.com/search?q=custom+sort+array+php

除非您必须动态创建字段,否则我建议您自己添加每个字段。

当我发布时,改变它的结构会影响蛋糕吗?

不,如果您只是将字段按不同的顺序排列,这不会影响 CakePHP。通过发送的数据POST将在数组中$this->data['Expense']。使用 保存数据时$this->model->save(),顺序无关紧要。

于 2012-08-23T13:05:00.347 回答
0

这是没有意义的。 如果关联数组中数据的顺序导致您的 HTML 字段/表单输入..无论是错误的顺序,您做错了。

尝试使用键而不是按顺序循环。或阅读有关关联数组的更多信息 - 使用和操作它们的数据有很多有趣/简单的事情......但再次重申,无需按特定顺序返回数据。

编辑:

您总是可以创建一个键数组并重复这些键。可能是管理订单的一种更清洁的方式。

于 2012-08-23T14:26:04.680 回答