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されるデータは array になり$this->data['Expense']ます。でデータを保存する場合$this->model->save()、順番は問いません。

于 2012-08-23T13:05:00.347 に答える
0

これは意味がありません。 連想配列内のデータの順序が原因で、HTML フィールド/フォーム入力が間違った順序になっている場合は、間違っています。

順番にループするだけでなく、キーを使用してみてください。または、連想配列の詳細をお読みください。データを使用および操作するための楽しくて簡単な方法がたくさんあります。繰り返しになりますが、特定の順序でデータを返す必要はありません。

編集:

いつでもキーの配列を作成して、それらを繰り返すことができます。注文を管理するよりクリーンな方法かもしれません。

于 2012-08-23T14:26:04.680 に答える