タグ付けされた質問 「forms」

フォームAPIに関する質問に使用します。エンティティまたはエンティティフィールドフォームには使用しないでください。



5
Ajaxを介して選択リストの値を更新するときに「不正な選択が検出されました」を回避するにはどうすればよいですか?
フォームにユーザーエンティティへのエンティティ参照フィールドが4つあります。ホストフォームはノード編集フォームです。3つは選択リストで、最後はインラインエンティティフォームです。 IEFを介してユーザーエンティティを追加した後、選択リストの値を更新しようとしています。 function ebep_users_feature_users_list_ajax($form, $form_state) { $ief = array_shift($form_state['inline_entity_form']); $options = array('_node' => t('- None -')); $commands = array(); foreach($ief['entities'] as $data) { $options[$data['entity']->uid] = $data['entity']->name; } foreach(_ebep_users_feature_getUserListFieldNames() as $fieldName) { $form[$fieldName]['und']['#options'] = $options; $commands[] = ajax_command_replace('#'.$fieldName.'_wrapper', drupal_render($form[$fieldName])); } return array('#type' => 'ajax', '#commands' => $commands); } それは機能しますが、IEFを介して別のユーザーを追加しようとすると、次のようになります。 違法な選択が検出されました。サイト管理者に連絡してください。
10 7  ajax  forms 

2
プログラムでリストフィールドの許可された値を更新する方法は?
Drupal 7でProfile2アカウントの選択リストを作成しました。許可値リストにいくつかの値を追加しました。次に、リストの値をプログラムで更新します(追加、削除、または更新)。これらの更新をデータベースにコミットするため、form_alterを使用したくありません。私の問題は、これらの値がデータベースのどこに保存されているのか、またはProfile2からこれらの値をプルして更新し、保存する方法を見つけられないようです。 私はこの特定の問題についてハイとローをグーグルで調べましたが、これを行う方法についての答えを見つけることができません。誰かが私を助けてくれることを願っています。 ありがとう。
10 7  forms  users 

2
フォーム要素タイプのファイルを使用してdrupal8フォームでファイルをアップロードする方法
ファイルをアップロードしたいのですが、フォーム要素のタイプを「ファイル」として使用する必要があります。送信機能で、アップロードしているファイルに関連する適切なデータを取得できません。SO誰かがこれを解決するのを手伝ってくれませんか?以下のコードを見つけてください: public function buildForm(array $form, FormStateInterface $form_state) { $form['test_CERTIFICATE'] = [ '#type' => 'file', '#title' => $this->t('Certificate'), '#description' => $this->t('Your Certificate (.pem file)').': '.\Drupal::state()->get('test_CERTIFICATE_NAME'), ]; return parent::buildForm($form, $form_state); } 送信機能: public function submitForm(array &$form, FormStateInterface $form_state) { parent::submitForm($form, $form_state); $validators = array('file_validate_extensions' => array('pem')); $files = file_save_upload('test_CERTIFICATE', $validators, 'public://certfiles', FILE_EXISTS_REPLACE); …
10 8  forms 

3
1つのエンティティフォームを別のエンティティフォームに埋め込み、両方を保存する
ユーザーエンティティに依存するカスタムエンティティがあります。実際、エンティティフォームをユーザープロファイルフォーム内に表示するのが理にかなっていると感じたのは、非常に重要です。 私が今抱えている問題は次のとおりです。2つの保存ボタンがあります。そして、それが十分に悪いわけではない場合、ユーザー(下の方)の保存ボタンは機能しなくなり、ホワイトラベル保存ボタンはホワイトラベルエンティティのみを保存します。 フォームは次のようにユーザーフォームに変更されます。 function whitelabel_form_user_form_alter(&$form, FormStateInterface $form_state) { $whitelabel = WhiteLabel::load(1); $whitelabel_form = \Drupal::service('entity.manager') ->getFormObject('whitelabel', 'default') ->setEntity($whitelabel); $form['whitelabel'] = array( '#type' => 'details', '#title' => t('White label settings'), '#open' => TRUE, 'form' => \Drupal::formBuilder()->getForm($whitelabel_form), ); } $whitelabel_form(Drupal 7で使用されていた)配列内のいくつかのパラメーターをシャッフルしたいと思っていましたが、その配列は非常に大きく、必要な送信ボタンとハンドラーが見つかりませんでした。 だから問題は、これを行うことができるのですか?そして、それを行うための推奨される方法は何でしょうか?
9 8  forms  users 

2
オーガニックグループのgroup_audienceなど、フォーム内のフィールドへのアクセスを非表示または禁止する方法
これはしばらくの間私を悩ませてきました。グループオーディエンスフィールドのようなフィールド、または発行設定をフォームから非表示にしようとすると、検証時にフォームはこれらのフィールドの両方をnull値に設定しました。正しく宣言されています。 Invisible、#access、unset hidden none workを使用しようとしました!私の現在のプロジェクトでは、ユーザーが編集できるのはプロファイルのごく一部、たとえば住所や写真だけなので、グループの聴衆を非表示にすると、ユーザーは自分が所属するグループから追い出されてしまいます編集。 ユーザーをグループに残したまま、以下のコードを使用してこれらのフィールドを非表示にしました。 $variables['user_edit_about']['group_audience']= $temp['group_audience']; $variables['user_edit_about']['group_audience']['#prefix'] = '<div style="display:none;">'; $variables['user_edit_about']['group_audience']['#suffix'] = '</div>'; 誰かがこれを達成するためのより良い方法を考えますか? ありがとう

1
Drupal 8で#element_validateと#value_callbackを使用する方法
私は公式のフォームAPIドキュメントに従いましたが、このコードはDrupal 8では機能しません。 public function buildForm(array $form, FormStateInterface $form_state) { $form['upload'] = array( '#title' => t('Upload Images'), '#type' => 'managed_file', '#upload_location' => 'public://image_example_images/', '#element_validate' => array('file_generic_settings_max_filesize'), ); return $form; } private function file_generic_settings_max_filesize($element, &$form_state) { form_error($element, 'This is an error.'); } $ form_state-> setErrorByName()でform_error()を削除しようとしていますが、同じ問題があり、ファイルがアップロードされ、検証が呼び出されません。 解決策はありますか?#element_validateのドキュメントは古くなっていますか? 私の目的:多数の画像をアップロードし、カスタム検証を使用して、すべての画像のサムネイルを内に挿入<div class="preview"></div>し、各画像に名前を付けるフィールドを指定します。 例:( アップロード後、すべての各画像の名前のサムネイルとタイトルフィールドを表示します) それ以外の場合、アップロード後、各画像のサムネイルとその他のフィールド(タイトルと説明)を表示するには、#value_callback、#process、#attached(アップロード後にjsでフィールド/ディスプレイを管理)または他のオプションを使用する必要がありますか? ありがとう。
9 8  forms 

2
`form_set_error`出力の場所をどのように変更しますか?
Drupal 7の出力の場所を変更する方法はありform_set_errorますか? 現時点ではdrupal_set_message、フォームのすべてのエラーを画面の上部にキューに入れる方を呼び出します。 代わりに、各メッセージが適切なフィールドの下に表示されるようにします。 これが不可能な場合、使用せずにMODULE_form_name_validate()関数内でフォームに「無効」のフラグを手動で設定できますか?form_set_error
9 7  forms 

4
Drupalフォームの送信後に結果を印刷するにはどうすればよいですか?
テキストボックスが1つあるシンプルなDrupalモジュールの設定があります。 私はテキストボックスに入力されたものを返すことができますdrupal_set_message(): function firstmodule_form1_submit($form, &$form_state) { drupal_set_message(t("The user is $username")); } しかしecho $username;、私にはうまくいきません、何も印刷されません。使用せずに結果を返すにはどうすればよいdrupal_set_message()ですか?
9 forms 


2
選択リストにHTML文字を追加する必要があります
入力の1つとして通貨値の選択リストを持つFAPIを使用するフォームがあります。次のようなHTML文字を追加できるようにする必要があります€ $pound; ¥ 問題は、Drupalが入力をフィルター処理していて、目的のシンボルを表示せず、上記のように実際のHTMLコードを表示していることです。 Drupalが私のリストをフィルターしないようにする方法はありますか?
9 forms  theming 

5
フォームAPIを使用してアップロードした後の画像のプレビュー
managed_fileフォームAPIタイプを使用して画像ファイルをアップロードしましたが、画像をアップロードした後、フィールドの横にサムネイルとして表示されません。レンダリングされるのは、画像へのリンクと小さなアイコンが付いた画像のファイル名です。 アップロード後に画像のサムネイルを表示するにはどうすればよいですか(コア画像フィールドの画像プレビューのように)? また、デフォルトの画像を横に表示するにはどうすればよいですか(デフォルトの値がある場合)。 これは私のコードです: $form['logo'] = array( '#title' => t('Logo'), '#type' => 'managed_file', '#required' => TRUE, '#default_value' => variable_get('logo', ''), '#upload_location' => 'public://', '#upload_validators' => array( 'file_validate_extensions' => array('gif png jpg jpeg'), 'file_validate_size' => array(0.3*1024*1024), )
9 7  forms  files 

1
フォームapi(フィールド接尾辞)を使用して入力フィールドの後にテキストを追加します
テキストフィールドを含むフォームを作成しています。入力フィールドの後にテキストを入れたいのですが。このような: Label * |________| some text Field description 私が使用するコードは次のとおりです。 $form['a_textfield'] = array( '#type' => 'textfield', '#title' => t('A Label'), '#size' => 10, '#maxlength' => 15, '#description' => t('A Field description'), '#required' => TRUE, ); このように入力フィールドの後に「テキスト」を追加する方法はありますか?#markupを使用して手動でHTMLコードを出力する必要がありますか?フォームを変更してこれを行う方法はありますか?またはテーマ機能?
9 7  forms 

5
複数のフォーム送信を防ぐ(サーバー側)
ユーザーがForm APIによって作成されたフォームを複数回送信できるという問題が発生しています(高速クリックすると複数のリクエストが発生します)。 ボタンを無効にする基本的なクライアントサイド(JavaScript)ソリューションを導入しましたが、この状況を防ぐ最善の方法はサーバーサイドにあるのかどうか知りたいです。 Drupalのフォームトークンシステムを使用してこれを処理するための推奨される方法はありますか?特にグローバルフォームソリューション(つまり、hook_form_alter()を使用してすべてのフォームにカスタムバリデーターを追加する)。 これまでの私のアプローチは次のようなものでした: function mymodule_form_alter(&$form, &$form_state, $form_id) { $form['#validate'][] = 'mymodule_form_validate'; } function mymodule_form_validate(&$form, &$form_state){ //initialize form array if (!isset($_SESSION['submitted_forms'])){ $_SESSION['submitted_forms'] = array(); } $form_token = $form_state['values']['form_token']; if ( isset($_SESSION['submitted_forms'][$form_token]) && $_SESSION['submitted_forms'][$form_token] = TRUE ){ form_set_error('name]', 'This form has already been submitted'); } else{ $_SESSION['submitted_forms'][$form_token] = TRUE; } …
9 forms 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.