function custom_form_node_form_alter(&$form, &$form_state, $form_id) {
if ($form['#node']->type == 'custom') {
$form['actions']['submit']['#value'] = t('Add Entry');
$form['field_custom_email']['und'][0]['value']['#element_validate'] = array('_custom_form_validate_email');
$form['#submit'][] = 'custom_node_submit';
}
}
function custom_node_submit($form, &$form_state) {
$form_state['redirect'] = 'choose/your/path';
}
Kod, formu göndermek için tıklatılan düğmeden bağımsız olarak yeniden yönlendirir. Bir formu yalnızca belirli bir gönderme düğmesi tıklatıldığında yeniden yönlendirmek istiyorsanız, aşağıdaki kodu kullanmalısınız.
function custom_form_node_form_alter(&$form, &$form_state, $form_id) {
if ($form['#node']->type == 'custom') {
$form['actions']['submit']['#value'] = t('Add Entry');
$form['field_custom_email']['und'][0]['value']['#element_validate'] = array('_custom_form_validate_email');
$form['actions']['submit']['#submit'][] = 'custom_node_submit';
}
}
function custom_node_submit($form, &$form_state) {
$form_state['redirect'] = 'choose/your/path';
}
- Form kimliği tire işareti içermiyor. Form kimliği, formu oluşturan PHP işlevinin adıdır (form oluşturucu olarak da bilinir) ve bir PHP işlevi adında tire işareti içeremez.
- Form kimliği hook_form_alter () , hook_form_BASE_FORM_ID_alter () ve hook_form_FORM_ID_alter () uygulamalarına geçirilir .
hook_form_FORM_ID_alter()
diğer iki kanca birden fazla form için çağrılırken, belirli bir form için çağrıldığı için buna gerçekten ihtiyacı yoktur.
- İlk işlev hook_form_BASE_FORM_ID_alter () işlevinin uygulanmasıdır ; bu durumda, temel form kimliği, düğüm düzenleme formunun temel formu olan "düğüm_formu" dur.
$form['#node']
Düzenlenen nesnenin düğüm nesnesi olan düğüm düzenleme formu içerir ; "özel", bir düğümü düzenledikten sonra kullanıcıları yönlendirmek istediğiniz içerik türünün kısa kimliğidir.
- Değiştirilmesi
$form_state['redirect']
gelen hook_form_alter()
herhangi bir etkisi yoktur; bir gönderme işleyicisinden ayarlanması gerekir.