1

やあ、私は Drupal 初心者なので、気楽にやってください。私はさまざまなフォームでいくつかのカスタム モジュールを作成しましたが、常に hook_form または hook_output を使用していました。同じモジュールで両方を使用できるかどうか疑問に思っていました。

最初にコースワークのリストを表示し、ユーザーがそれらのいずれかをクリックすると、指定されたコース ID のフォームを生成するモジュールが 1 つあります。

学生のリストを生成する方法は hook_output を使用しており、リストが生成されます。これが発生するビュー URL は次のとおりです: /drupal/?q=lecturers/evaluate_student/

コースワーク用に生成されたリストは次のようになります。

<a href='?q=lecturers/evaluate_student/1/'>Evaluate: <b>Advanced Networking</b></a><br/> 

これは実質的に、この同じ ID を呼び出して、URL に追加のパラメーターを追加します (この場合は /1/)。

これを取得する方法は、args() を使用することです。

if (arg(2)) {
        /* Get arguments from URL 
         */
        $coursework_id = arg(2);

    }

別のモジュールにリダイレクトせずに、この ID を使用してフォームを生成したいと思います。ここで別の hook_form を作成して呼び出すことはできますか? はいの場合、どうすればよいですか?

前もって感謝します、-D

4

1 に答える 1

0

わかりましたので、しばらく調査して解決策を試してみた後、まったく複雑ではありませんでした。

最初に hook_form を作成しました:

function evalute_student_form($form, &$form_state){
    $form['coursework_description'] = array(
        '#type' => 'textarea', //you can find a list of available types in the form api
        '#title' => 'Coursework Description:',
        '#size' => 150,
        '#maxlength' => 150,
        '#required' => TRUE, //make this field required 
    );
    return $form;

次に、このコードを使用して、このメソッドの戻り値 $form を出力に追加しました。

 if (arg(2)) {
        /* Get arguments from URL and then assign the class to the user.
         */
        $coursework_id = arg(2);
       return evalute_student_form();        
    }

誰かに役立つことを願っています。

于 2013-05-06T14:46:37.937 に答える