gpt4 book ai didi

drupal - 如何在 Drupal 中覆盖表单操作?

转载 作者:行者123 更新时间:2023-12-04 23:33:45 25 4
gpt4 key购买 nike

我最初在另一个线程中开始了这个问题,但是那个线程有点,有点回答,现在我主要想知道如何指定另一个表单操作......我尝试使用下面的代码,但是输出时表单操作仍然存在没有改变,虽然看着 print_r($form) ,它正确地改变了......为什么它不接?

function mytheme_user_profile_form($form) {
global $user;
$uid = $user->uid;
//print '<pre>'; print_r($form); print '</pre>';
$category = $form['_category']['#value'];

switch($category) {
case 'account':
$form['#action'] = '/user/'.$uid.'/edit?destination=user/'.$uid;
break;
case 'education':
$form['#action'] = '/user/'.$uid.'/edit/education?destination=user/'.$uid;
break;
case 'experience':
$form['#action'] = '/user/'.$uid.'/edit/experience?destination=user/'.$uid;
break;
case 'publications':
$form['#action'] = '/user/'.$uid.'/edit/publications?destination=user/'.$uid;
break;
case 'conflicts':
$form['#action'] = '/user/'.$uid.'/edit/conflicts?destination=user/'.$uid;
break;
}

//print '<pre>'; print_r($form); print '</pre>';
//print $form['#action'];
$output .= drupal_render($form);
return $output;

最佳答案

hook_form_alter() 很可能是要走的路。
以下是一些希望有用的链接:

Form Theming: How do I set $form['action']?

Modifying Forms in Drupal 5 and 6

hook_form_alter

编辑:回复下面的评论#1:

如何实现 hook_form_alter() :

您必须创建一个模块(您不能使用 template.php )。它比看起来容易。

对于名为“formstuff”的模块,您将创建 formstuff.infoformstuff.module并将它们放入 sites/all/modulessites/yoursitename/modules .根据 the instructions 设置 .info 和 .module 文件,然后只需在 .module 文件中创建以下函数:

function formstuff_form_alter(&$form, $form_state, $form_id) {
// do stuff
}

这个函数是一个钩子(Hook),因为它被正确命名(即用你的模块名称替换单词 'hook'),它匹配 hook_form_alter的函数签名(即它采用相同的参数)。

然后只需在您网站的管理员中启用您的模块, Hook 就可以发挥作用。

请注意 hook_form_alter引用表格;这允许您就地修改它。

关于drupal - 如何在 Drupal 中覆盖表单操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1570544/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com