Saya memiliki entitas khusus, tergantung pada entitas pengguna. Bahkan, itu sangat tergantung bahwa saya merasa masuk akal untuk menampilkan formulir entitas saya dalam formulir profil pengguna:
Masalah saya sekarang adalah sebagai berikut; ada 2 tombol simpan. Dan jika itu tidak cukup buruk, tombol simpan untuk pengguna (yang lebih rendah) bahkan tidak berfungsi lagi dan tombol simpan label putih hanya menyimpan entitas label putih.
Formulir diubah ke bentuk pengguna seperti ini:
function whitelabel_form_user_form_alter(&$form, FormStateInterface $form_state) {
$whitelabel = WhiteLabel::load(1);
$whitelabel_form = \Drupal::service('entity.manager')
->getFormObject('whitelabel', 'default')
->setEntity($whitelabel);
$form['whitelabel'] = array(
'#type' => 'details',
'#title' => t('White label settings'),
'#open' => TRUE,
'form' => \Drupal::formBuilder()->getForm($whitelabel_form),
);
}
Saya berharap untuk mengocok beberapa parameter dalam $whitelabel_form
array (yang dulu bekerja di Drupal 7), tetapi array itu sangat besar dan saya tidak dapat menemukan tombol dan pengendali pengiriman yang saya butuhkan.
Jadi pertanyaannya adalah, dapatkah ini dilakukan? Dan apa cara yang direkomendasikan untuk melakukannya?
Jawaban:
Alih-alih mencoba melakukan hal Anda sendiri, Anda harus mencoba modul Formulir Entitas Inline . Modul ini dibuat untuk kasus khusus ini (membuat / mengedit entitas dalam bentuk entitas).
Saya tahu banyak pekerjaan telah dilakukan untuk meningkatkan alur kerja di Drupal Commerce, yang berarti ini harus bekerja dengan baik. Saya belum mengujinya sendiri, tetapi karena Drupal Commerce bergantung pada Drupal 8 juga, itu seharusnya sudah cukup stabil.
Modul ini bekerja dengan menambahkan widget ke bidang referensi entitas yang membuat formulir, jadi itu harus cukup banyak plug and play. Satu-satunya persyaratan adalah bahwa pengguna memiliki referensi ke entitas kustom Anda.
sumber
Saya percaya ini harus mungkin. Sayangnya, saya tidak punya waktu untuk menulis kode hari ini, namun, saya pikir Anda harus mengingat hal-hal berikut:
form_id
danform_build_id
digunakan oleh Drupal untuk mengenali formulir yang dikirimkan.unset($sub_form['actions'])
sebelum menambahkan sub-formulir ke formulir utama.#tree
formulir sehingga Anda bisa menangkap nilai-nilai sub-form di saku terpisah dalam variabel POST. Contoh,$form['#tree'] = TRUE; $form['sub-form'] = $sub_form;
Ini akan membuat nilai sub-formulir Anda tersedia di$form_state['values']['sub-form']
.sub-form
nilai$form_state['values']
(harap Anda mengerti apa yang saya maksud).Semoga ini bisa membantu! Kedengarannya seperti percobaan yang luar biasa! Semoga berhasil.
sumber
form_build_id
,form_token
,form_id
danactions
membuat tombol hilang dan membuat 'bentuk luar' bekerja lagi. Saya akan bermain dengan ini lagi dan memberi tahu Anda cara kerjanya.$form_state ['values']
(kunci elemen formulir kosong). Itu mungkin tidak mungkin (belum), tetapi saya berharap untuk menemukan ini suatu hari nanti.Jawaban teoretis (jawaban yang tidak berfungsi, tapi ini yang paling dekat yang saya dapat) Posting di sini untuk referensi dan titik awal untuk orang lain.
Ubah formulir pengguna.
Kirimkan handler:
sumber