在同一个Drupal模块的钩子中调用一个钩子

时间:2013-05-06 14:18:28

标签: drupal-7 drupal-modules drupal-hooks

嘿伙计们我是Drupal Noob所以对我来说很容易。我已经创建了几个具有不同形式的自定义模块,但是我一直使用hook_form或hook_output。我想知道我是否可以在同一个模块中使用它们。

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

我生成学生列表的方式是使用hook_output并生成列表。 发生这种情况的视图URL是: / drupal的/ Q =讲师/ 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

1 个答案:

答案 0 :(得分: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();        
    }

我希望它对某人有用。