2013-05-06 103 views
1

嗨,我是Drupal Noob,所以對我來說很簡單。我已經創建了幾個不同形式的自定義模塊,但是我一直都在使用hook_form或者hook_output。我想知道我是否可以在同一個模塊中使用兩者。在同一個Drupal模塊的掛鉤內調用鉤子

我有一個模塊應該是第一個顯示課程列表然後用戶點擊任何一個它應該爲給定的課程ID生成一個表格。

我生成學生列表的方式是使用hook_output並生成列表。 其中發生這種情況的視圖URL是這樣的:? /drupal的/ Q =講師/ evaluate_student/

和用於courseworks生成的列表是看起來這樣:

<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

+0

請注意,Drupal不使用任何[hook_output()](http://api.drupal.org/api/drupal/7/search/hook_output)。如果有這樣一個鉤子,那是從第三方模塊中定義的。 – kiamlaluno 2013-05-07 06:56:40

回答

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; 

,然後我簡單地加入這個方法,它是$形式輸出通過使用該代碼的返回:

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

希望其有用給某人。

+0

這不是[hook_form()](http://api.drupal.org/api/drupal/modules%21node%21node.api.php/function/hook_form/7)實現;它是一個表單構建器。 – kiamlaluno 2013-05-07 06:48:33