注:原文連接:http://befused.com/drupal/form-validation(翻譯水平有限,還望海涵)
start:
表單驗證是web系統中必不可少的一部分,你須要確保用戶輸入的信息是不是可取的,若是不可取會反饋錯誤信息
感謝Drupal鉤子,你能夠簡單的在任何一個表單中增長驗證,即便你並無建立這個表單。在這個教程裏面,你會學習怎樣用驗證函數去驗證一篇文章表單,增長一篇文章的的地址在這裏 node/add/article
示例你要確保用戶不能增長這個標題打的文章:」 the quick fox jumped over the lazy dog」,若是寫下了這個標題,則返回一個錯誤信息。
在這個教程中,你可能須要下載和開啓一個叫devel的開發神器來打印消息(dpm函數)。php
增長一個新的驗證函數,你須要去alter下這個表單(至於爲何我不細講了,就是重寫下表單)若是看不懂看完這裏應該就會了(
○17天開始模塊開發(http://befused.com/drupal/form-alter)
○23天開始模塊開發。(http://befused.com/drupal/first-module)
)
OK,咱們開始吧 node
「`
1. function starting_drupal_dev_form_alter(&form, &form_state, form_id) {
2. if (form_id == ‘article_node_form’) {
3. dpm($form[‘#validate’]);
4. }
5. } web
「`從上面代碼能夠看到,咱們第一步判斷form的ID是不是acticle_node_form,而後用dpm($form[‘#validate’]),。它列出了全部的驗證函數。
當你點擊進/node/add/acticle頁面,你能夠看見node_form_validate(),
數組
你須要增長一個驗證函數到$form[‘#validate’]這個數組裏面
函數名:’ starting_drupal_dev_form_validate’markdown
1. function starting_drupal_dev_form_alter(&$form, &$form_state, $form_id) { 2. if ($form_id == 'article_node_form') { 3. $form['#validate'][] = 'starting_drupal_dev_form_validate'; 4. dpm($form['#validate']); 5. } 6. } ```你如今能夠在打印機上看見這裏有兩個驗證handlers.核心的 node_form_validate是其中的一個![這裏寫圖片描述](http://img.blog.csdn.net/20150406223756947) 建立一個驗證函數: 如今你須要增長一個回調函數starting_drupal_dev_form_validate() <div class="se-preview-section-delimiter"></div>
`當表單被提交後,這個表單的值存放在$form_state裏面,你能夠打印出來看一看
這裏寫代碼片
1. function starting_drupal_dev_form_validate($form, &$form_state) { 2. 3. } ``當表單被提交後,這個表單的值存放在$form_state裏面,你能夠打印出來看一看`
找到你須要的字段。$form_state[‘values’][’title’]
若是這個值爲「the quick fox jumped over the lazy dog」就返回一個錯誤
函數
1. function starting_drupal_dev_form_validate($form, &$form_state) { 2. if ($form_state['values']['title'] == 'the quick fox jumped over the lazy dog') { 3. form_set_error('title', t('You have added an invalid title.')); 4. } 5. } **```咱們先分析下上面的函數**
if ($form_state[‘values’][‘title’] == ‘the quick fox jumped over the lazy dog)
這裏是一個簡單的判斷函數
若是它的值是the quick fox jumped over the lazy dog它將返回真
而後裏面的代碼將會被執行學習
form_set_error('title', t('You are not allowed to use "the quick fox jumped over the lazy dog" as a title.')``` ![這裏寫圖片描述](http://img.blog.csdn.net/20150406224134945) 驗證多種標題 ------ 如今咱們來試着用兩個值進行驗證。第二個值就取:「birds of a feather flock together」
拆分來看看吧
$invalid_titles = array(‘the quick fox jumped over the lazy dog’, ‘birds of a feather flock together’);ui
首先,咱們建立了一個須要判斷標題的數組
if (in_array( formstate[′values′][′title′], invalid_titles)) { .. }
「`
接下來咱們判斷標題值是否等於數組裏面任何一個成員spa
OK,教程到此結束,相信你應該也會使用驗證函數了吧,
沒錯,這就是一個簡單的驗證函數。.net