Drupal

Drupal開発者および管理者向けのQ&A

3
段落フィールドの値を取得する方法は?
drupalで製品リストを作成し、Webサービスで送信したいと思います。このために、各製品の段落を持つエンティティタイプを作成しました。段落をロードしてそのフィールドにアクセスするにはどうすればよいですか?これまでは、製品のtarget_idとtarget_revision_idのみが表示されていました。ありがとう! $nodestorage = \Drupal::entityManager()->getStorage('node'); $productslist = $nodestorage->loadUnchanged(9)->toArray(); foreach($productslist['field_products'] as $prod) { debug($prod); } 結果: Array ( [target_id] => 1 [target_revision_id] => 3 )


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 

4
匿名ユーザーのデータ/セッションの保存
私は店で働いています、そしてカートのために、私は支払いの前にアイテムを保存する必要があります。 $tempstore = \Drupal::service('user.private_tempstore')->get('boutique'); $tempstore->set('poids', $form_state->getValue('poids')); 以下のユーザーサービスを確認します。 pivate_tempstoreおよびshared_tempstore しかし、それは認証ユーザーに対してのみ機能します。 ストアデータには何を使用できますか?$ _SESSION?またはDrupal 8にはそのためのサービスがありますか?
12 8  sessions  files 

4
プログラムでコンテンツタイプを削除する方法は?
モジュールのインストール中に(フィールドストレージ構成を使用して)プログラムでコンテンツタイプを作成しました。 モジュールのアンインストール中にそのコンテンツタイプを削除したい。 Drupal 8でこれを行う方法はありますか?
12 nodes  8 

3
drupal.orgサイトが最新のDrupalバージョンを使用していないのはなぜですか?
drupal.orgがDrupal 8の使用を奨励している場合、彼らは例を挙げて主導し、自分のサイトをDrupal 8に移行すべきだと思います。 drupal.orgで: <meta name="Generator" content="Drupal 7 (http://drupal.org)"> 彼らがDrupalバージョン8をリリースしたが、彼ら自身がまだDrupalバージョン7を使用している理由はありますか?それらが移行していないという事実は、まだすべきではない疑わしい理由を教えてくれるでしょうか?

4
データベース挿入の例を探しています
db_insertマニュアルページによると、この機能は非推奨であり、挿入を実行するにはDrupal 8データベース接続を使用することをお勧めします。 非推奨 Drupal 8.0.xの時点で、Drupal 9.0.0で削除されます。代わりに、コンテナからサービスにデータベース接続を挿入し、それに対してinsert()を呼び出します。たとえば、$ injected_database-> insert($ table、$ options); データベース接続を取得してinsert()メソッドを呼び出すにはどうすればよいですか?
12 database  8 

4
Drushを実行するとエラーが返される
DreamhostersでDrushバージョン6.2.0と最新のDrupal 8ベータ版を実行しています。私は実行すると、drush cc allサイトのディレクトリ内に、私はすぐにコマンドを実行した後、次のエラーが表示されます。 致命的なエラー:63行目の/home/mywebsite/mywebsite.com/core/includes/bootstrap.incにクラス 'Drupal \ Core \ Session \ AccountInterface'が見つかりません回復不能なエラーのため、Drushコマンドが異常終了しました。 エラー:クラス 'Drupal \ Core \ Session \ AccountInterface'が/home/mywebsite/mywebsite.com/core/includes/bootstrap.incの63行目に見つかりません なぜ起こるのですか?どうすれば修正できますか?
12 drush  8 

1
Drupal 8でプログラムでフォームを取得する
ドキュメントの状態: getForm()メソッドに渡される引数は、フォームを定義するクラスの名前であり、\ Drupal \ Core \ Form \ FormBuilderInterfaceの実装です。 コアコンタクトモジュールによって提供されるWebサイトフィードバックフォームを定義するクラスの名前を確認するにはどうすればよいですか(フォームIDは次のとおりです)。feedback_contact_message_form とき、私はdpm()、フォームIは、定義されたクラスがあることがわかります。 $input array(30) →'#attributes' => array(1) →'class' => array(3) string(29) "feedback-contact-message-form" string(20) "contact-message-form" string(12) "contact-form" 渡すパラメータとしてこれのさまざまな形式を試しました: \Drupal::formBuilder()->getForm(); しかし、運はありません。ありがとう
12 8 

2
マルチページWebformの以前のステップの値にアクセスする方法は?
私はWebform 4を使用しています。バージョン3で使用したような独自の%トークンではなく、Drupalのトークンを使用しています。 複数ページのサブスクリプションフォームを作成するとします。最初のページには、メールフィールドのみがあります。2つ目は、次のようなマークアップが必要です。 molot@example.comの詳細なサブスクリプション構成 同様に、請求先住所や配達先住所をユーザーに尋ねるなど、将来のフィールドのデフォルト値として使用できるようにしたいと考えています。 そのためのトークンはありますか?私が今したことは: function mymodule_token_info() { $type = array( 'name' => t('Webform submitted values'), 'description' => t('Tokens related to $_POST[\'submitted\'].'), ); $tokens = array(); if(isset($_POST['submitted'])) { foreach($_POST['submitted'] as $key => $val) { //discard $val now $tokens[$key] = array( 'name' => $key, 'description' => "\$_POST['submitted']['$key']", ); } } …
12 webforms  tokens 

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 

1
メンバーシップ/ユーザーロールのアプリケーションとしてWebformを使用する
Drupalサイトで以下を実装したいと思います。 匿名サイト訪問者(Joe)は、さまざまなカスタムフィールドを含むメンバーシップアプリケーションを送信します 管理者(ジェーン)が会員申請を審査 JaneはJoeのアプリケーションを承認し、新しいユーザーアカウントを作成します ジョーは承認通知とログイン情報を取得します 可能な解決策: A Webフォーム(しかし、どのようにWebフォームからのデータを簡単にユーザーアカウントに転送することができますか?) 管理者の承認が必要なProfile2。(これに関する問題は、ユーザーがサイトでアカウントを作成しているように感じることは望まないが、メンバーシップを申請することです。) 匿名ユーザーが入力できるメンバーシップコンテンツタイプを作成します(?) 明らかな何かを見落としているように感じます。 メンバーシップには3つの異なるタイプがあるため、追加のフィールドでコアユーザー登録を使用することはできません。また、ユーザーは1つのメンバーシップから別のメンバーシップに変更できる必要があります(承認時に)。
12 webforms  users 


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 

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