1

嘿伙计们,我是 Drupal Noob,所以请放轻松。我已经创建了几个具有不同形式的自定义模块,但是我一直使用 hook_form 或 hook_output。我想知道我是否可以在同一个模块中使用两者。

我有一个模块应该首先显示课程作业列表,然后在用户单击其中任何一个后,它应该为给定的课程 ID 生成一个表单。

我生成学生列表的方式是使用 hook_output 并生成列表。发生这种情况的视图 URL 是这样的:/drupal/?q=lectures/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 并调用它,如果可以,我该怎么做?

先谢谢了

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 回答