Lo que intento hacer no funciona, todavía me redirigen a / node / {id}:
function hook_form_alter(&$form, $form_state, $form_id) {
$form['actions']['submit']['#submit'][] = 'callback_set_redirect';
}
function callback_set_redirect($form, FormStateInterface $form_state) {
$form_state->setRedirect('custom.landing.page');
}
8
redirection
olsav
fuente
fuente
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.
Respuestas:
Básicamente, el código funcionará solo para la acción de envío, pero el formulario de guardado del nodo drupal tiene muchas acciones, creo que debería haber iniciado sesión como administrador y probarlo, luego siga el código a continuación.
si desea que esto también funcione para otras acciones, eso significa iniciar sesión como administrador y ver el botón de guardar nodo, tendrá que seleccionar la opción "guardar y publicar", "guardar y no publicar". como se mencionó
fuente
Usando hook_form_alter, deberás hacer dos cosas
1) asegúrese de que sea un formulario de nodo 2) agregue un controlador de envío personalizado a cada botón de envío.
Luego, para la función de envío, puede usar la lógica que desee. Puede comparar con NodeForm :: save, donde lo envía a la página de nodo canónico o a la página de inicio en función de los permisos de acceso del usuario actual.
Si desea cambiar este comportamiento para que permanezca en el formulario de nodo actual, puede hacer esto:
Si desea usar su página de destino personalizada, simplemente reemplace la redirección con el código que ya está usando:
Tenga en cuenta que esto no se anulará cuando haya un parámetro "destino" $ _GET, como en la página / admin / content.
Para eliminar el parámetro de destino de la página / admin / content, desmarque la casilla de verificación "destino" en "Contenido: Enlaces de operaciones (Operaciones)" en esos campos de vistas.
fuente
Tuve éxito usando Symfony RedirectResponse:
fuente
No puedo encontrar nada malo con el código original, por lo que es probable que algo más esté mal. Funciona bien para mí.
Sin embargo,
custom.landing.page
debe ser una ruta definida y los parámetros (si los hay) deben pasarse de la siguiente manera:Vea FormState :: setRedirect () para más detalles.
fuente
Siempre uso el módulo Node Save Redirect para esta funcionalidad. Agrega una opción a un tipo de contenido que dice "qué hacer después de guardar contenido nuevo".
fuente