我试图修改一些Drupal 6表单代码并合并一些本机表单验证.代码看起来像这样,但验证不起作用.我从来没有进入函数thisFormName_form_validate.任何Drupalians有一些好主意吗?
function thisFormName_form_alter(&$form, $form_state, $form_id) {
$form['email_address'] = array(
'#type' => 'textfield',
'#title' => t('Enter your email address (optional)'),
'#default_value' => $object['email_address'],
'#weight' => 4,
'#size' => 60,
'#maxlength' => 128,
'#description' => t('Enter email address.'),
);
function thisFormName_form_validate($node, &$form) {
if ($form_state['values']['email_address'] == '')
{
form_set_error('', t('Email must be valid format if entered.'));
}
}
Run Code Online (Sandbox Code Playgroud) 当用户输入他的登录信息并点击提交时,我想检查用户是否已经存在.所以,我有以下两个问题1.当用户点击登录表单上的提交按钮时,需要实现哪个钩子.我需要用户输入的用户名.2.如何以编程方式检查用户是否已经存在于drupal中?
一些示例代码将非常感激.请帮忙.
谢谢.
我正在构建一个表单模块.其中一个早期字段是一组单选按钮.默认情况下,选择第一个按钮.接下来我将有一系列选择框.一个人需要看得见,其他人看不见.然后,当用户选择不同的单选按钮时,我希望显示或隐藏不同的选择框.如何在默认情况下隐藏字段和标签,并在以后根据选择哪个单选按钮(或其他选择框选项)显示它?
我试图有一个按钮不是"提交"类型的按钮,而是一个普通的"按钮"类型,使用drupal 7的形式api,但我似乎无法得到它.
我尝试了很多东西,比如将#type设置为'button',将#button_type设置为'button',但无论我做什么,drupal总是创建一个"submit"类型的按钮.
在Drupal中是否有任何核心功能可以从用户名获取uid?或者我应该执行数据库查询?我的字段是一个文本字段,其中'#autocomplete_path'等于'user/autocomplete'
我需要将样式和只读属性应用于drupal表单的输入元素.我编码如下:
$form['precio'] = array(
'#type' => 'textfield',
'#title' => t('Precio'),
'#default_value' => ''.$precio,
'#size' => 20,
'#required' => TRUE,
'#attributes' => array($inputAtributo => 1),
'#description' => t('Modifica el precio '),
);
Run Code Online (Sandbox Code Playgroud)
并在 '#attributes' => array($inputAtributo => 1),
在创建表单之前,我检查这个输入是否应该是readonly并应用一些样式:
if ($tarifa !='' & $tarifa=='N')
$inputAtributo=" readonly style=\"background: none repeat scroll 0 0 #EAEAEA;\" ";
else
$inputAtributo = "";
Run Code Online (Sandbox Code Playgroud)
这有效,但我认为它编码不正确
html代码显示以下内容:
<input id="edit-precio" class="form-text required" type="text" maxlength="128" size="20" value="258" name="precio" ="1"="" style="background: none repeat scroll 0 0 #EAEAEA;" readonly="">
Run Code Online (Sandbox Code Playgroud)
我怎么能做得更好?
如何在与表单本身相同的页面上打印表单提交的结果?
相关hook_menu:
$items['admin/content/ncbi_subsites/paths'] = array(
'title' => 'Paths',
'description' => 'Paths for a particular subsite',
'page callback' => 'ncbi_subsites_show_path_page',
'access arguments' => array( 'administer site configuration' ),
'type' => MENU_LOCAL_TASK,
);
Run Code Online (Sandbox Code Playgroud)
页面回调:
function ncbi_subsites_show_path_page() {
$f = drupal_get_form('_ncbi_subsites_show_paths_form');
return $f;
}
Run Code Online (Sandbox Code Playgroud)
表格构建功能:
function _ncbi_subsites_show_paths_form() {
// bunch of code here
$form['subsite'] = array(
'#title' => t('Subsites'),
'#type' => 'select',
'#description' => 'Choose a subsite to get its paths',
'#default_value' => 'Choose a subsite',
'#options'=> $tmp,
);
$form['showthem'] = array(
'#type' …
Run Code Online (Sandbox Code Playgroud) 对于某些要求,我需要传递其他信息以形成提交处理程序.在表单api中,将自定义提交处理程序定义为
$additional_args = array();
$form['#submit'][] = 'my_submit_handler'
Run Code Online (Sandbox Code Playgroud)
我希望提交处理程序为
function my_submit_handler($form, &$form_state, $additional_args){
Run Code Online (Sandbox Code Playgroud) 我想为使用视图渲染的选择列表中的以下每个选项添加title ="icons/icon_cart.gif".
在尝试阅读了很多文章后,我似乎找不到将这个html添加到我的表单中的方法.
以下是我的代码.
function customchatter_form_alter(&$form, &$form_state, $form_id) {
$form["tid"]["#options"][1]=t("nooo chatter");
// this works to change the label of the option but how do I add title="icons/icon-
cart.gif" ?
}
Run Code Online (Sandbox Code Playgroud)
我的HTML代码:
<select id="edit-tid" name="tid" class="form-select">
<option value="All">- Any -</option>
<option value="1">nooo chatter</option>
<option value="2">Complaints Complaints</option>
<option value="3">Gear & Gadgets</option>
</select>
Run Code Online (Sandbox Code Playgroud)
干杯,维沙尔
更新 我尝试根据Clive的建议更新代码,但值仍未正确.以下是我的故事.
所以下面是我能够实现的html输出,但标题似乎总是数字1.
<select id="edit-select" class="form-select" name="select">
<option value="1" title="1">One</option>
<option value="2" title="1">Two</option>
</select>
Run Code Online (Sandbox Code Playgroud)
你可以看到标题存在,但价值是错误的.下面是我的表格和我写的功能.
我的表格:
$form['select'] = array(
'#type' => 'select',
'#options' => array(1 => 'One', …
Run Code Online (Sandbox Code Playgroud) 我正在创建一个模块,允许用户在这种情况下更新单个字段,即用户实体.
下面的代码是我最初用于使其工作并测试模块的其他元素的方法的示例
global $user;
$account = user_load($user->uid);
$edit = (array) $account;
$edit['field_lastname']['und'][0]['value'] = 'test';
user_save($account, $edit);
Run Code Online (Sandbox Code Playgroud)
然而,这绕过了Drupal中其他地方定义的任何字段验证.我不想重现其他地方写的任何验证 - 这不是Drupal方式!
我的问题是:Drupal 7中是否有一个函数可以调用来更新单个字段的值.我想这样的函数会清除相应的缓存,调用字段验证等.
我知道解决方案将与我当前基于用户对象的解决方案完全不同.我只是不能为我的生活在API中找到合适的功能.我徘徊是否我正在寻找一个保存功能的事实是问题 - 并且还有一些其他必要的步骤.
任何帮助感激不尽.
drupal ×10
drupal-fapi ×10
drupal-6 ×4
drupal-7 ×4
php ×4
drupal-forms ×2
drupal-alter ×1
forms ×1
validation ×1