個人プロジェクトにwebform 8.xを使用していますが、ノードの作成者のみがフォームを送信できるようにすることが可能かどうか知りたいのですが。
私のプロジェクトでは、各ノードは水族館であり、私はwebformを使用して、特定のノード(水族館)のすべての日次データ(温度、pH、KH eccなど)を収集しています。ノード(水族館)に関連するビューを作成できました。その特定の水族館の毎日送信されたデータを表示できますが、問題は、誰でもフォームを送信できることです。ウェブフォームを送信します。
何かアイデアをください。行き詰まっている.
相談した後 ノードの作成者のみにコメントを許可する および この本 この質問に自分で答えることができると思います:
私はカスタムモジュールを作成し、 hook_form_alter を使用しました:
ここに関数があります:
function MODULE_NAME_form_alter(&$form, $form_state, $form_id) {
if($form['#webform_id'] == "YOUR-WEBFORM-ID"){
$node = \Drupal::request()->attributes->get('node');
if(!is_null($node) && $node->getOwnerId() != \Drupal::currentUser()->id()) {
$form['#access'] = false;
}
}
}
これがDrupal 7またはDrupal 8であるかどうかはわかりませんが、これはD8で機能するはずです
作成者ごとにウェブサイトにユーザーアカウントが既にあるようです。ウェブフォームの[設定]に移動し、[アクセス]タブをクリックしてください(例:/ admin/structure/webform/manage/FORM_MACHINE_NAME/access)
そしてそこで、あなたは特定のユーザーだけに提出を作成する能力を制限することができます