我最初在另一个线程中启动了这个问题,但该线程有点,有点回答,现在我主要想知道如何指定另一个表单动作...我尝试使用下面的代码,但表单操作,当输出时,仍然没有改变,虽然看着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;
Run Code Online (Sandbox Code Playgroud) 在典型的PHP应用程序中,我曾经在使用SQL插入之前使用mysql_real_escape_string.但是我无法在Drupal中这样做,所以需要一些帮助.没有任何类似的功能,用撇号的用户输入会破坏我的代码.
请建议.
谢谢
我的SQL如下:
$ sql ="INSERT INTO some_table(field1,field2)VALUES('$ field1','$ field2')";
db_query($的SQL);
我正在构建一个Drupal模块,使用管理表单将图标绑定到特定页面.放置在某个目录中的每个图像都需要输出,旁边的选择框显示所有主要链接标题.
我使用foreach循环构建了表单,但是当我dpm($form);在_submit函数中检查输出时,每个图像页面元素的#value总是等于为最后一个图像设置的值.
这是我的代码:
function titleicon_admin_settings() {
$settings = variable_get('titleicon_settings', $default);
//build an array of primary link titles
$primary_links_items = menu_primary_links();
foreach ($primary_links_items as $item) {
$title = $item['attributes']['title'];
$href = $item['href'];
$titles[$href] = $title;
}
//build array of icons
$directory = file_directory_path() . '/icons';
$mask = '(jpg|jpeg|gif|png|JPG|JPEG|GIF|PNG)';
$icons = file_scan_directory($directory, $mask);
foreach ($icons as $icon) {
$name = $icon->name;
$path = base_path() . $icon->filename;
$html = '<img src="' . $path . '" width="50" height="50" />';
$default_value …Run Code Online (Sandbox Code Playgroud) 我正在尝试提交表单并使用hook_form_submit.
问题是表单是通过ajax显示的,这导致hook_form_submit没有被调用.
$items['ajaxgetform/%'] = array(
'page callback' => 'ajaxgetform',
'access arguments' => array('access content'),
'type' => MENU_CALLBACK
);
function ajaxgetform($form_id) {
drupal_get_form($form_id);
return drupal_json($panel);
}
function_myform_form($form_state) {
$form['myform'] = array(
'#title' => 'myform value',
'#type' => 'textfield',
'#default_value' => 'myform default value'
);
$form['#action'] = url('myurl');
$form['submit'] = array(
'#type' => 'submit',
'#value' => 'submit'
);
$form['#ajaxsubmit'] = TRUE;
return $form;
}
Run Code Online (Sandbox Code Playgroud)
hook_form_alter() 确实被召唤了.
下面没有被调用?
function myform_form_submit($form, $form_state) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
我不确定这是否是一个常见的问题,但我已经被困了几个小时试图让它工作.
如果我删除 $form['#action'] = url('myurl'); myform_form_submit()被调用.但是我得到了一个带有jason脚本的白色屏幕.
我需要在Drupal 7中向节点添加一个程序化表单.如何将表单附加到节点?
function addtabexample_form($node, &$form_state) {
$type = node_type_get_type($node);
$form['title'] = array(
'#type' => 'textfield',
'#title' => check_plain($type->title_label),
'#default_value' => !empty($node->title) ? $node->title : '',
'#required' => TRUE,
'#weight' => -5,
);
$form['field1'] = array(
'#type' => 'textfield',
'#title' => t('Custom field'),
'#default_value' => $node->field1,
'#maxlength' => 127,
);
return $form;
}
Run Code Online (Sandbox Code Playgroud) 是否可以在drupal 7模块的验证或提交函数中添加其他表单元素?以下代码工作,图像显示在窗体上:
function test1_form($form, &$form_state)
{
$form['image']=array(
'#markup'=>'<img src="sites/all/modules/create_ad/th.jpeg"><br/>', //replace with your own image path
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => 'Submit',
);
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试在提交函数中提交后显示图像,如下所示,它不起作用:
function test1_form($form, &$form_state)
{
$form['submit'] = array(
'#type' => 'submit',
'#value' => 'Submit',
);
}
function test1_form_submit($form,&$form_state)
{
$form['image']=array(
'#markup'=>'<img src="sites/all/modules/create_ad/th.jpeg"><br/>', //replace with your own image path
);
}
Run Code Online (Sandbox Code Playgroud)
欢迎任何积极的帮助.谢谢.
我知道如何使用模块创建一个块,我知道如何使用表单api创建自定义表单.
现在,我想在我创建的块中添加此自定义表单.
我想设置ID使用表单API在模块中创建的表单元素的属性。
我们将销售订单从会计系统导入Drupal 6站点.
我们设置了一个名为orders的内容类型.
我想为我们的运输提供商建立一个运输模块(目前还没有).
我理解如何构建"块"模块和"内容"模块.
构建模块的最佳方法是什么,该模块将出现在我们的订单节点的底部,这些模块提供了他们需要完成的表单(反过来会处理运送)
如果可能的话,我想在不创建不同内容类型的情况下这样做
问题:
在Drupal 7的Form API中,当使用#AJAX刷新字段时,在刷新整个页面之前,不会显示验证中的错误消息.我看到我刷新的字段在错误状态中突出显示,但用户没有看到相关的消息,直到它为时已晚(他们重新加载页面,或转到另一页).
我开始在这个庄园中手动处理错误堆栈:Drupal.org - 在验证过程中筛选出特定的错误,但我有一个复杂的表单,并且有足够的时间来完成此任务.必须有一些方法来刷新堆栈并向用户显示消息,而无需手动处理所有内容.
注意:我正在使用带有回调的多命令,因此使用它是我的选择.
$commands[] = ajax_command_replace("#my_wrapper", render($form['test']['field_a']));
$commands[] = ajax_command_replace("#another_wrapper", render($form['test']['field_b']));
return array('#type' => 'ajax', '#commands' => $commands);
Run Code Online (Sandbox Code Playgroud)
思考?
drupal-fapi ×10
drupal ×8
drupal-7 ×4
php ×4
drupal-6 ×3
drupal-forms ×3
action ×1
ajax ×1
drupal-alter ×1
foreach ×1
forms ×1