ฉันกำลังค้นหาเพื่อแก้ไขแบบฟอร์มการเพิ่มโหนด จนถึงตอนนี้ฉันได้เพิ่ม "ลิงก์" ฟิลด์ส่วนบุคคลเพื่อแสดงเป็นปุ่มสำหรับเพิ่มประเภทโหนดอื่นหากผู้ใช้ต้องการ ลิงก์นั้นมีรหัสนี้อยู่ใน hook_form_alter
ฉันจับค่าจากตัวเลือกอื่นก่อนหน้านี้ และส่งค่านั้นไปยังเส้นทางของฉัน::
$selected_advertiser = isset($form_state->getUserInput()['field_advertiser'])? $form_state->getUserInput()['field_advertiser'] : "0";
$url = Url::fromRoute('product.product_form', ['advertiser' => $selected_advertiser]);
$form['product_modal'] = [
'#type' => 'ลิงค์',
'#name' => 'product_modal',
'#title' => t('สินค้าใหม่'),
'#url' => $url,
'#attributes' => [
'คลาส' => [
'ใช้อาแจ็กซ์'
'ปุ่ม',
],
'data-dialog-type' => 'โมดอล',
'data-dialog-options' => '{"width":800, "height": 500}',
'disable-refocus' => จริง,
'style'=>'display: inline-block',
],
“#น้ำหนัก” => 5,
];
routing.yml
product.product_form:
เส้นทาง: /product/product_form/{advertiser}
ค่าเริ่มต้น:
_controller: '\Drupal\my_module\Controller\mycontrollerController::openModalProduct'
_title: 'ป๊อปอัปสำหรับแบบฟอร์มผลิตภัณฑ์'
ความต้องการ:
_permission: 'จัดการการกำหนดค่าไซต์'
ดังนั้นในครั้งแรกที่เรียกใช้จะตั้งค่า $selected_advertiser เป็น "0" แต่ครั้งต่อไปจะตั้งค่าอย่างถูกต้องเป็น id ใดก็ตามที่ฉันเลือกจากตัวเลือกก่อนหน้า แต่เส้นทางไปยังปุ่มยังคงตรงกับค่าเริ่มต้น "0" ตัวดีบั๊กของฉัน กำลังแสดงเส้นทางใหม่ที่ถูกต้องพร้อมรหัสใหม่ที่ถูกต้อง แต่ปุ่มแบบฟอร์มไม่ใช่ ฉันเดาว่าสิ่งนี้เกี่ยวข้องกับการเปลี่ยนแปลงแบบฟอร์มที่ไม่ได้ระบุหรืออะไรทำนองนั้น