Hook_form_alter kullanarak iki şey yapmanız gerekir
1) bunun bir düğüm formu olduğundan emin olun 2) her gönderme düğmesine özel bir gönderme işleyicisi ekleyin.
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';
}
}
}
}
Sonra gönderme fonksiyonu için, istediğiniz mantığı kullanabilirsiniz. Geçerli kullanıcının erişim izinlerine göre kanonik düğüm sayfasına veya ön sayfaya gönderdiği NodeForm :: save ile karşılaştırabilirsiniz.
Bu davranışı geçerli düğüm formunda kalacak şekilde değiştirmek istiyorsanız, bunu yapabilirsiniz:
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>');
}
}
}
Özel açılış sayfanızı kullanmak istiyorsanız, yönlendirmeyi yalnızca kullandığınız kodla değiştirmeniz yeterlidir:
$form_state->setRedirect('custom.landing.page');
/ Admin / content sayfasındaki gibi bir "hedef" $ _GET parametresi olduğunda bunun geçersiz olmayacağını unutmayın.
Destination parametresini / admin / content sayfasından kaldırmak için, bu görünüm alanlarındaki "İçerik: İşlem bağlantıları (İşlemler)" altındaki "hedef" onay kutusunun işaretini kaldırmak istersiniz.
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.