私の目標は、作成/編集ノードで「Create new revision」がチェックされている場合に「revision log message」を必須にすることです。
「create new revision」フィールドに基づいて、可視および必須のマークを追加できます。
function hook_form_node_form_alter(&$form, &$form_state, $form_id) {
$form['revision_information']['log']['#states'] = [
'required' => [
':input[name="revision"]' => ['checked' => TRUE],
],
'visible' => [
':input[name="revision"]' => ['checked' => TRUE],
],
];
}
必要に応じて「改訂ログメッセージ」も作成できます。
function hook_form_node_form_alter(&$form, &$form_state, $form_id) {
$form['revision_information']['log']['#required'] = [
'required' => [
':input[name="revision"]' => ['checked' => TRUE],
],
];
}
しかし、「新しいリビジョンを作成」チェックボックスに基づいてフィールドを必須にする方法がわかりません。
PS:これを簡単にしたいと思います "Enforce revision log message "モジュールを使用したくありません。
//更新1:カスタムフックの検証が必要であり、それを検索する
何時間も検索した結果、答えが見つかりました。基本的に、リビジョンログのカスタムフック検証を追加するだけです。以下のコードを参照してください。
function MYMODULENAME_form_node_form_alter(&$form, &$form_state, $form_id) {
// change revision log status based on revision checkbox
$form['revision_information']['log']['#states'] = array(
'required' => array(
':input[name="revision"]' => array('checked' => TRUE),
),
'visible' => array(
':input[name="revision"]' => array('checked' => TRUE),
),
);
}
function MYMODULENAME_node_validate($node, $form, &$form_state) {
// add revision log validation
if (empty($form_state['values']['log']) && ($form_state['values']['revision'])) {
form_set_error('log', 'Revision log message cannot be empty!');
}
}
これが必要なリビジョンログメッセージを必要とする人に役立つことを願っています。