[Contribution to Doc] Generate SSH keys (Windows/msysgit)
http://drupal.org/node/1066762/revisions/view/1363182/1365204
Log:
1. as of 2011-02-22, msysgit Git-1.7.4-preview20110204.exe use /u instead of /c/Doc...
2. change of location "Add a public key"
3. After 28 Feb 2011, Git migration, the location of "Add a public key" changes again
改變 form 的 template
這次修改的是 views 的 exposed form
需要比較大的修改便想要使用 tpl 而不使用 template.php
舊文 form 也可以使用template (*.tpl.php)也有說明, 但已經不是 Drupal6.x 作法了
以下更新為 Drupal6.x 的作法:
先自建一個模組, 使用 hook_theme
定義如下:
<?php
function mymodule_theme($existing, $type, $theme, $path) {
return array(
//form id
'form_id' => array(
'arguments' => array('node' => NULL),
'template' => 'search_form', //表示使用 search_form.tpl.php
),
);
}
?>
重點在於提供一個 template 的值, 你便可以在該 tpl 檔使用
<?php $form; ?>
再使用
<?php drupal_render($form['title']); ?>
之類完成 form 的 各欄位和 html 碼
最後, 實作的時候記得清緩存就可以了
查找一個選單的欄位的可選項 Get display values of a dropdown list
在 views 的 $views->exposed filter 可以提取已經提交的表單值
但除了值之外, 一般還需要欄位的其他資料,
例如欄位旳值和顯示值不一樣的時候,
可以使用:
<?php
//field_hotel_group 是欄位名
$mappings = optionwidgets_options(content_fields('field_hotel_group'));
?>
可得到類似:
你便可以自己再處理了
You can get the value of view's exposed filter value by $views->exposed filter
But other than value, the display value is also needed
Especially when the submit value is not the same as display value:
Actually you can use:
<?php
//field_hotel_group is the field name
$mappings = optionwidgets_options(content_fields('field_hotel_group'));
?>
and you will obtain:
and then you can map back those values for your own use.
Attachment | Size |
---|---|
form-options-sample.JPG | 25.1 KB |
form-options.JPG | 27.49 KB |
[Contribution to Doc] Webform confirmation page
需要修改 webform 模組的完成頁面,
而且需要根據 webform 的內容客製化,
例如 "感謝[firstname] [lastname] 的聯絡, 我們會盡快回覆."
Google 一下, 找到 Confirmation Page Usage of Form Components or Variables
但根據了指示仍不得要領, 發現了一個 bug,
webform.submissions.inc 的路徑改變了, 所以就成就了以下的修改
http://drupal.org/node/600696/revisions/view/738336/1354722
2011-02-07 為 form 增加新的 validation 規則
hook_form_alter() 本來是為了修改 form 的各種屬性
例如增加欄位, 修改欄位的預設值等等
但其實還可以增加 validation 規則和增加提交後的處理
增加 validation 規則:
<?php
function mymodule_form_alter(&$form,$form_state, $form_id) {
if($form_id=='user_register') { //只是一個例子, 你可以填入需要的 form id
//為 #validate 陣列增加一個元素, 元素的值就是新的 validate 函數名
$form['#validate'][] = 'mymodule_new_user_register_validation';
}
}
//然後定義新的 validate 函數, 帶入兩個參數
function mymodule_new_user_register_validation($form, &$form_state) {
//$form_state['values'] 儲存用戶提交的數據
if(strpos('admin',$form_state['values']['username'])===false) {
//用戶名字不可以有 admin 的字眼
form_set_error('username', '用戶名字不可以有 admin 的字眼');
}
}
?>
增加提交後的處理:
<?php
function mymodule_form_alter(&$form,$form_state, $form_id) {
if($form_id=='user_register') {
//為 #submit 陣列增加一個元素, 元素的值就是新的提交後處理函數
$form['#submit'][] = 'mymodule_new_user_register_submit';
}
}
//然後定義新的 validate 函數, 帶入兩個參數
function mymodule_new_user_register_submit($form, &$form_state) {
//$form_state['values'] 儲存用戶提交的數據
drupal_set_message('Welcome, '.$form_state['values']['username']);
}
?>
相關:
Drupal form API
hook_submit, hook_form_alter, hook_validate in Drupal 6.x