web-dev-qa-db-ja.com

hook_form_alter()を使用してワークフローのデフォルト状態を変更する

ノード編集フォームでhook_form_alter()を使用してプログラムで Workflow モジュール設定にアクセスして変更するにはどうすればよいですか?

ワークフロー]モジュールの設定は、ノード編集フォームの独自のフィールドセットで確認できますが、dd($form)dd($form_state)の出力を確認しても、その説明は見つかりません。 、またはdpm($form)

次のような場所が見つかると思いました。

$form['edit_workflow']['value'];
1
Citricguy

$ form ['workflow']は Form API 内で #after_build を使用してアクセスできます。

function hook_form_alter($form, &$form_state) {
    $form['#after_build'][] = '_manage_workflow';
}

function _manage_workflow($form, &$form_state) {
    $form['workflow'] = ''; //Do workflow alterations here...
    return $form;
}
0
Citricguy

hook_form_alter() の実装は Workflow モジュールによって提供される実装よりも前に実行されるようです。 hook_module_implements_alter() を実装して、 hook_form_alter() の実装が実行される順序を変更します。または、モジュールに Workflow よりも高い重みを付けます。

このアプローチは、具体的には hook_form_FORM_ID_alter() の実装の順序を変更する場合には機能しないことに注意してください。 hook_form_FORM_ID_alter() の実装は、常に hook_form_alter() の実装と同じ順序で実行されます。これは drupal_prepare_form()drupal_alter() を呼び出す方法が原因です。

0
Oswald