Saya memiliki API back-end di symfony dan depan di vueJs, Di aplikasi saya, saya memiliki rute untuk mendapatkan definisi formulir ...

Tetapi untuk entityType saya perlu memiliki daftar pilihan jadi saya melakukan ini:

$result['choice'] = array_reduce($config->getOption('choice_list')
                    ->getChoices(), function ($carry, $item) {
                        return array_merge($carry, [(string)$item->getId() => (string)$item]);
                    }, []);

Secara teori ini mengembalikan sesuatu seperti:

[ "0" => "value1", "1" => "value2", "3" => "value3" ... ]
( note, key are not necessary continue)

Dalam praktiknya, debugger mengatakan "0" itu numerik begitu juga int! Dan JMS atau json_encode melakukan hal yang sama ... dan setelah serialisasi, saya memiliki array sederhana tanpa kunci!

Bagaimana saya bisa menipu JMS atau fungsi PHP asli untuk mendapatkan array asosiatif nyata?

0
Andrelec1 20 Desember 2017, 13:30

1 menjawab

Jawaban Terbaik
$result['choice'] = array_reduce($config->getOption('choice_list')
                    ->getChoices(), function ($carry, $item) {
                        return array_merge($carry, ["0{$item->getId()}" => (string)$item]);
                    }, []);

Concat "0" di depan id lakukan triknya :)

Saya memiliki string id "palsu" di formulir saya ... tetapi ketika saya mengirimkan formulir ... symfony melemparkan "01" ke int ^^

0
Andrelec1 20 Desember 2017, 11:46