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

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

6
hook_form_alterを使用してフィールドを読み取り専用にする方法
編集モードでは、Drupalプロファイルフォームフィールドの一部を読み取り専用にしようとしています。hook_alterで次のコードを使用しています $form[field_organisation_company_name][und][0]['#after_build'][]='_build_element_readonly'; function _build_element_readonly($element, &$form_state) { $element['value']['#attributes']['readonly'] = 'readonly'; return $element; } UIでは、フィールドは読み取り専用として表示されますが、それでも、firebugとsaveを使用して値を変更できます。この動作を防ぐ方法はありますか?
12 7  forms 

3
cache_formを小さく保つ方法
mysqlでcache_form.MYDテーブルが14GBであることに気付きました。なぜこんなに大きくなったのですか?それを空にしても安全ですか?どうすればこのような事態を将来回避できますか? ありがとう


1
水平フォーム要素
フォームについて説明しましたが、すべての要素は前の要素の下にあります。すべての要素が垂直ではなく水平に配置されるフォームを記述する必要があります。これは私のフォームです: function contact_register_form($form, &$form_state) { $form['description'] = array( '#type' => 'item', '#title' => t('Sign up to be notified when your community launches:'), ); $form['email'] = array( '#type' => 'textfield', '#title' => t('Email'), ); $form['submit'] = array( '#type' => 'submit', '#value' => 'Add me', ); return $form; }
12 forms 


2
Drupal 8でデフォルトでカスタムフィールドセットを折りたたむ方法
Drupal 7では、フィールドセットを折りたたみ可能にするかどうか、およびこのフォーム要素のデフォルトの状態(折りたたみまたは折りたたみなし)を制限するオプションがありました。例: $form['contact_data'] = array( '#title' => t("Contact data"), '#type' => 'fieldset', '#collapsible' => TRUE, '#collapsed' => FALSE, ); さて、Drupalの8に私はattributtes見つけることができない#collapsibleと#collapsedしてをDrupal\Core\Render\Element\Fieldset。Fieldset要素の公式ドキュメントには、Fieldset要素を置き換える新しい要素は記載されていません。 また、Drupal 7などのDrupal 8のForm API要素の概要はありません。コード内のすべてのRender Elements定義を手動で検索する必要があり、より時間がかかります(特に要素の概要を表示して比較する場合)。 。
12 forms  8 

2
AJAX呼び出し後にフォームを再構築する方法
私は、ユーザーがajax呼び出しを使用してドロップダウンボックスに基づいて多数のフィールドを動的に選択できるようにしていますが、後でフォームを再構築するためにajax呼び出しを取得できないようです。 <?php class AJAXexample extends BlockBase { public function blockForm($form, FormStateInterface $form_state) { if (empty($form_state->getValue('number'))) { $form_state->setValue('number', 3); } $form['columnNum'] = [ '#title' => t('Number of Columns'), '#type' => 'select', '#options' => [ 1 => '1', 2 => '2', 3 => '3', 4 => '4', ], '#default_value' => $this->configuration['columnNum'], '#empty_option' …
12 forms  8  ajax 

8
既存のフォームを変更する
Drupal 8から始めてすぐに、最初の問題にぶつかりました。 Drupal 8の既存のフォームを変更するにはどうすればよいですか? ノードフォームのsaveメソッドを変更して、他のページにリダイレクトする必要があります。ノードフォームを変更して、マルチステップフォームのようなものにしたいと思います。ユーザーは新しいコンテンツを作成した後、新しいフォーム(作成した)にリダイレクトされ、さらに情報を取得します。 実装の問題を解決しましたhook_entity_type_alter()。 function mymodule_entity_type_alter(&$entity_info) { $handlers = $entity_info['node']->get('handlers'); $handlers['form']['default'] = 'Drupal\mymodule\Form\MyExtendedNodeForm'; $handlers['form']['edit'] = 'Drupal\mymodule\Form\MyExtendedNodeForm'; $entity_info['node']->set('handlers', $handlers); } 次に、ノードフォームを拡張し、saveメソッドを変更する新しいフォームクラスを作成しました。 class MyExtendedNodeForm extends NodeForm { public function save(array $form, FormStateInterface $form_state) { parent::save($form, $form_state); $node = $this->entity; $form_state->setRedirect('entity.regions.add_form', ['nid' => $node->id()]); } } これは完全に機能しますが、それは良いですか?別のモジュールが同じことを行うと、コードは実行されなくなります。
12 8  forms 

5
Form APIの数値フィールドタイプ
FAPIを使用してフォームに「数値」フィールドタイプを追加しようとしています。 $form['phone_number']['areacode'] = array( '#type' => 'textfield', '#title' => '---', '#width' => '30%', '#align' => 'center', '#required' => true, '#maxlength' => 3 ); TYPEを「number」に変更すると、フィールドがまったく生成されません。番号モジュールが有効になっています。次のテーマ関数を実装しました。 MYTHEME_form_element MYTHEME_textfield MYTHEME_container #type = numberや#type = number_integerなどを使用すると、このフィールドの後ろに何が表示されないのでしょうか? これには何か関係があるかもしれません: カスタムフォームのコードで数値フィールド(整数と小数)を手動で作成する ただし、実際には、タイプをHTMLで「数値」としてレンダリングして、スマートフォンに数値ダイヤラーが表示されるようにします。 何か案は?
12 forms 

2
「フォームが古くなっています」エラーを取得する
マルチステップノードフォームがあります。フォームの途中でポップアップダイアログを使用する場合、ユーザーが以前にログインしていない場合はログインするよう求められます。 ノードフォームの次のページに進むときにログインに成功すると、次の検証エラーが発生します。 フォームは古くなっています。未保存の作業を以下のフォームにコピーしてから、このページを再読み込みしてください。 私はそれがdrupal_validation_form()検証$form['#token']と$form_state['values']['form_token']同じだからだと理解しています。 これは特別なユースケースであるため、これをどのように回避しますか(そして、それはいくつかの外部のものによる偽造ではありません)。 この前面に何か入力はありますか?
12 forms 

2
ノードコンテンツをlightbox2にロードします(ヘッダーとフッターおよびその他のブロックなし)
すべての追加ブロックをロードすることなく、ノードを(idから)ライトボックス2にロードすることは可能ですか?ノードが表示しなければならないもの いくつかのノードを内部に表示できるように、いくつかのリンクにいくつかのポップアップを作成します。この場合、送信は行われません(コメントは無効です) もう1つのクールなことは、ライトボックスにWebフォームを含めることです。また、ヘッダーはありません。しかし、フォーム送信なので、より複雑だと思います。

7
フォームAPIを使用して<button type =“ submit”>を生成する
統合するテーマの多いフォームがあります。その構造を以下に示します。私は、提出を除いて、ほとんどのところそこにいます。 &lt;form action="#"&gt; &lt;fieldset&gt; &lt;legend&gt;Authentification&lt;/legend&gt; &lt;label for="email"&gt;Courriel*&lt;/label&gt; &lt;input type="text" name="email" id="email"&gt; &lt;label for="password"&gt;Mot de passe*&lt;/label&gt; &lt;input type="password" name="password" id="password" class="last"&gt; &lt;a href="#" title="Mot de passe oublié?" class="clearfix"&gt;Forgot password?&lt;/a&gt; &lt;button type="submit" class="clearfix"&gt;&lt;span&gt;Login&lt;/span&gt;&lt;/button&gt; &lt;/fieldset&gt; &lt;/form&gt; 私はさまざまな組み合わせを試しましたが、button_typeはコアに影響を与えないことがわかりました。だから私はこのハックを使って、それが私の問題を修正することを望みました。悲しいかな、それは 'type'属性(明らかに)のみを変更し、要素自体は変更しません。ボタンタイプは他の要素を保持できます。この場合、背景画像を保持するためにスパンが必要です。ボタン内のテキストが動的であるため、ストレッチするためにスパン内にある必要があります。 フォームAPIを使用して次のマークアップ行を生成する方法について誰かが手掛かりを持っていますか? &lt;button type="submit" class="clearfix"&gt;&lt;span&gt;Login&lt;/span&gt;&lt;/button&gt;
12 forms 

6
AJAXを使用してフォームを検証および送信する方法
Form APIを使用してWebフォームを作成しました。#AJAX各フィールドにAJAX検証を追加するためにフィールドオプションを使用しています。 ページをリロードせずにAJAXを使用してフォームを検証および送信することは可能ですか?検証が失敗した場合はエラーメッセージを表示し、検証が成功した場合はメッセージ(理想的にはライトボックス内)を表示してフォームフィールドをリセットします。 これまでの私のコード: $form['name'] = array( '#type' =&gt; 'textfield', '#title' =&gt; t('Name'), '#default_value' =&gt; '', '#maxlength' =&gt; '128', '#required' =&gt; TRUE, '#ajax' =&gt; array( 'callback' =&gt; '_validate_name', 'wrapper' =&gt; 'name-error-icon-container', 'method' =&gt; 'html', 'effect' =&gt; 'none', 'progress' =&gt; array( 'message' =&gt; NULL, ), ), ); $form['submit'] = array( '#type' …
12 7  forms  ajax 


2
Webフォーム-Drupal 7から外部URLへの値の送信
私はDrupalでフォームを作成することを自称しています。Drupal 7のWebサイトでホストされているフォーム(webformモジュールを使用)があり、フォームの値を外部URLに送信する必要があります。私はしばらくこれを調査していて、webformモジュールを使用して、hook_form_alterとカスタム送信ハンドラー/関数(以下に貼り付けられたコード)を使用して外部送信するカスタムモジュールを作成しました。 次のページをガイドとして使用していますが、フォームを機能させることができません。https : //drupal.org/node/1357136 drupal_http_post()を使用して外部サイトに送信する:違う? 私が正しい軌道に乗っているかどうか誰かが私に知らせることができますか?どんなガイダンスも役に立ちます! &lt;?php function webform_extra_form_alter(&amp;$form, &amp;$form_state, $form_id) { //only want form with nid 1171 to submit externally //Note that "webform_client_form_1171" means modify the Webform form for the node with NID "1171". Adjust to match whichever webform node's form you're modifying if($form_id == 'webform_client_form_1171') { $form['#action'] …
11 7  hooks  webforms  forms 

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