0

このシンプルな形でブロック(左)を作りました。今、私はページ(中央)で結果を処理して表示したいのですが、どうすればいいですか?

入力:

name = James
surname = Bond

私が欲しい出力:

<div style="color:red">Welcome, James Bond</div>

ここに私が書いて動作するブロックがあります。

<?php

echo drupal_get_form('myForm');

function myForm($form_state) {
 $form['name'] = array(
  '#type' => 'textfield',
  '#title' => t('Name'),
  '#size' => 20,
  '#maxlength' => 10
 );
 $form['surname'] = array(
  '#type' => 'textfield',
  '#title' => t('Surname'),
  '#size' => 20,
  '#maxlength' => 10
 );
 $form['submit'] = array(
  '#type' => 'submit',
  '#value' => t('Save')
 );
return $form;
}

function myForm_submit($form,&$form_state)
{
 //??
};

次に、出力を表示する必要があります:)。

VIEWS やその他のアドオンの使用を提案しないでください。

Drupal を徹底的に学びたい。その逆ではありません ;)

4

4 に答える 4

4

まあ、それはあなたが物事をやりたい方法に少し依存します。drupalモジュールの作成方法を学んでいるので、 hook_menu()の実装から始めたいと思うかもしれません。このフックはメニュー項目を定義するために使用されます。これは基本的に、その関数にURLを登録できることを意味します。そのルートに行くと、次のことができます。

  1. hook_menu()を実装します
  2. リダイレクトを処理する一般的な方法は、drupal_goto()を使用することです。$form_state['redirect']ただし、この場合、Henrikがコメントで説明したようにを使用する方がはるかに適切です。
  3. リダイレクト先のURLには、ロジックを配置するコールバック関数が必要です。hook_menuの設定方法とコールバック関数によって、変数を使用できるようにする方法が決まります。おそらく、URLから値を取得するために一般的に使用されるarg()関数を調べたいと思うでしょう。
  4. フィルタを介してユーザー入力を実行し、スクリプトタグなどの厄介なものが投稿されていないことを確認します。check_plainを使用します
  5. テーマ関数を返すか、独自の関数を作成し、theme()hook_theme()を確認します

これを行うにはもっと速い方法がありますが、この方法で行うと、drupalがキャッシュできるすべての検索結果のURLが生成されます。これは素晴らしいことです。また、投稿パラメータに依存せずに、検索結果をブックマークできます

もう1つは、フォームに基本的な検証を加えたい場合があるということです。それは学ぶのに良い習慣でしょう。これは次のようになります。

/**
 * Validation handler for myForm.
 */
function myForm_validate($form, &$form_state) {
    $name = $form_state['values']['name'];
    // do some checks to $name.
    if ($error) {
        form_set_error('name', t('error message to be displayed, showing the value of the field: @name', array('@name' => $name);
    }
};
于 2009-10-02T15:47:17.680 に答える
0

drupal_set_html_head()を使用して、ページのヘッドセクションにスクリプトの文字列を書き込むのはどうですか?私は特定のページでこれを行っています(ユーザーの緯度と経度を取得してgMap関数に渡します)が、hook_form_submit()から直接同じことを行うことに興味があります。何度か試してみましたが、明らかにスクリプト文字列を出力していますが、submitから関数を呼び出すとうまくいかないようです。

于 2010-09-08T04:58:27.667 に答える
0

フォームに AHAH を実装し、ページのコンテンツ領域内の要素を「ラッパー」 (コールバック関数の結果が配置される要素) として指定できます。しかし、それを試みる前に、オペル氏の優れたアドバイスを理解する必要があります。

于 2009-10-08T17:14:25.080 に答える
0

submit 関数が html 出力でいっぱいのページを作成する場合。これをページのコールバックに渡す最良の方法は何ですか? URLの引数として渡すことがうまくいくとは思えません。

私はセッション変数に詰め込みましたが、もっと良い方法はありますか?

于 2011-01-03T22:26:18.813 に答える