Hook_form_alter का उपयोग करते हुए, आपको दो काम करने होंगे
1) सुनिश्चित करें कि यह एक नोड फॉर्म 2 है) प्रत्येक सबमिट बटन पर एक कस्टम सबमिट हैंडलर जोड़ें।
function mymodule_form_alter(&$form, FormStateInterface $form_state, $form_id) {
if (isset($form['#entity_type']) && $form['#entity_type'] == 'node') {
foreach (array_keys($form['actions']) as $action) {
if ($action != 'preview' && isset($form['actions'][$action]['#type']) && $form['actions'][$action]['#type'] === 'submit') {
$form['actions'][$action]['#submit'][] = 'mymodule_node_form_submit';
}
}
}
}
फिर सबमिट फ़ंक्शन के लिए, आप जो भी तर्क चाहते हैं उसका उपयोग कर सकते हैं। आप NodeForm :: save के साथ तुलना कर सकते हैं, जहां यह आपको या तो कैनोनिकल नोड पेज पर या वर्तमान उपयोगकर्ता की एक्सेस अनुमतियों के आधार पर फ्रंट पेज पर भेजता है।
यदि आप इस व्यवहार को बदलना चाहते हैं ताकि यह वर्तमान नोड फॉर्म पर बना रहे, तो आप ऐसा कर सकते हैं:
function mymodule_node_form_submit($form, FormStateInterface $form_state) {
$node = $form_state->getFormObject()->getEntity();
if ($node->id()) {
if ($node->access('edit')) {
$form_state->setRedirect(
'entity.node.edit_form',
['node' => $node->id()]
);
}
else {
$form_state->setRedirect('<front>');
}
}
}
यदि आप अपने कस्टम लैंडिंग पृष्ठ का उपयोग करना चाहते हैं, तो आप अपने द्वारा पहले से उपयोग किए जा रहे कोड के साथ पुनर्निर्देशित करें:
$form_state->setRedirect('custom.landing.page');
ध्यान दें कि जब "गंतव्य" $ _GET पैरामीटर है, जैसे कि / व्यवस्थापक / सामग्री पृष्ठ पर यह ओवरराइड नहीं करेगा।
गंतव्य पैरामीटर को / व्यवस्थापक / सामग्री पृष्ठ से निकालने के लिए, आप उस दृश्य फ़ील्ड में "सामग्री: संचालन लिंक (संचालन)" के तहत "गंतव्य" चेकबॉक्स को अनचेक करना चाहेंगे।
If saving is an option, privileged users get dedicated form submit buttons to adjust the publishing status while saving in one go. @todo This adjustment makes it close to impossible for contributed modules to integrate with "the Save operation" of this form. Modules need a way to plug themselves into 1) the ::submit() step, and 2) the ::save() step, both decoupled from the pressed form button.