2017-02-22 10 views
0

私はDrupal 8.2.6を使用しています。カスタムコンテンツタイプページに表示されるブロックを作成したいと思います。Drupal 8 - カスタムモジュール内のノードフィールド値を読み取る

これは、訪問者が製品(カスタムコンテンツタイプ)を予約したいという電子メールをサイト管理者に送信する予約ブロックの一種です。

フォームが必要なのは、送信ボタンとフォームをレンダリングするブロックだけです。

しかし、現実のポイントは、サイトの管理者への製品の参照でメールを送信することです。

私はhereを見つけたように、私は、私はこのスニペットを使用して必要な値を得ることができます:

if ($node = \Drupal::routeMatch()->getParameter('node')) { 
    $field_my_custom_value = $node->field_my_custom_value->value; 
} 

をしかし、私は、私はそれを使用する必要があります私のコードのどの範囲にわかりません。この例はカスタムブロック内の値をレンダリングするためのもので、私の場合は値を含むメールを送信します。

Drupal 8のカスタムモジュールからメールを送信する方法を教えてもらえますか?私は、以前のリビジョンに私の質問を戻すつもりですと誰もがそれを必要とする場合にはそう

どうもありがとう

答えて

0

は、ドキュメントの一日の全体の価値の後に、それを自分自身を解決した後に、ここでの解決策は、あります。

そうでは、上記の問題のスニペットを考えると、私はbuildForm()機能

public function buildForm(array $form, FormStateInterface $form_state) { 
    $field_value = ''; 
    if ($node = \Drupal::routeMatch()->getParameter('node')) { 
    $field_value = $node->field_name->value; 
    } 

    $form['field_value'] = array(
    '#type' => 'value', 
    '#value' => $field_value, 
); 
    // And then you add the definition for other form items and submit button 
} 

と値を使用してメールを送信するために、あなたはこのよう$form_stateを使用して値を取得して変数を宣言しました

public function submitForm(array &$form, FormStateInterface $form_state) { 
    $module = 'your_module_name'; 
    $key = 'any_key_you_would_like'; 
    $to = '[email protected]'; 
    $langcode = 'en'; 
    $params = array(
    'body' => 'Node is booked', 
    'subject' => $form_state->getValue('field_value'), 
); 

    $mailer = \Drupal::service('plugin.manager.mail'); 
    $mailer->mail($module, $key, $to, $langcode, $params, NULL, TRUE); 
} 

$node->field_name->valueの代わりに$node->getTitle()を使用するノードのタイトルなど、いくつかの値はノードから取得するのが非常に難しいので、Drupal 8のDevel + Kintどの属性とメソッドを使用するかを知るためのモジュールです。

+0

素晴らしい!この非常にポストの左側にある投票モジュールの下のチェックをクリックすることで、あなたの解決策をあなたの質問への回答としてマークすることができます。 – nyedidikeke

関連する問題