2010-01-25 4 views
0

노드 표시 페이지에 선택 메뉴가있는 간단한 양식이 있습니다. 내 콜백 함수에서 양식의 유효성을 검사하는 쉬운 방법이 있습니까? 유효성 검사를 통해 양식 배열에 값이 실제로 있는지 확인하기 위해 고급 것은 아닙니다. 예를 들어, 아약스가 없는데, 제 선택 메뉴에 3 개 항목이 있고 4 번째 항목을 추가하고 양식을 제출하려고하면 drupal은 "불법 선택이되어 관리자에게 문의하십시오."와 유사한 오류를 표시합니다.Drupal 6 폼 콜백 함수 유효성 검사

아약스로 작성한이 4 번째 항목은 데이터베이스에 저장됩니다. 그렇다면 유효성 검사를 작성해야합니까?

if ($select_item > 0 && $select_item <= 3) { 
    //insert into db 
} 

또는 양식 배열에 항목이 실제로 있는지 쉽게 확인할 수있는 방법이 있습니까? 아약스없이 drupal은 조작 된 양식을 제출하지 않기 때문에 거기에 있기를 바라고 있습니다. 감사.

편집 : 그래서 기본적으로이 콜백 함수가 필요합니까?

$form_state = array('storage' => NULL, 'submitted' => FALSE); 
$form_build_id = $_POST['form_build_id']; 
$form = form_get_cache($form_build_id, $form_state); 
$args = $form['#parameters']; 
$form_id = array_shift($args); 
$form_state['post'] = $form['#post'] = $_POST; 
$form['#programmed'] = $form['#redirect'] = FALSE; 
drupal_process_form($form_id, $form, $form_state); 

$ _POST [ 'form_build_id']를 받으려면 데이터 매개 변수로 보냈습니다. 맞습니까? form_get_cache를 사용할 때 데이터가없는 것처럼 보입니다. 일종의 잃어버린.

+1

목표가 정확히 무엇입니까? 당신이 여기 잘못된 길로 향하는 것처럼 들립니다. – googletorp

+0

죄송합니다. 제가 너무 잘 설명하지 못했다면, 제 목표는 옵션이 폼 선택 배열 내에 있고 조작되지 않았는지 확인하는 것입니다. 예를 들어 내 선택 메뉴에 빨간색, 녹색, 파란색의 3 개 항목이 있다고 가정 해 보겠습니다. 이제 누군가 내 데이터베이스에 가짜 정보를 입력하려고 시도하고 네 번째 옵션 인 검은 색을 추가합니다. 아약스없이이 폼을 제출하면 드루팔 (Drupal)은 블랙이 배열에 존재하지 않았으며 불법적 인 선택이되었다는 것을 알게 될 것입니다. 그러나 콜백 함수를 사용하여 아약스를 사용하면이 기본 유효성 검사가 발생하지 않으므로 검정 값이 삽입됩니다. 원하는 것을 지우는 희망. – Wade

답변

0

이미 AJAX를 사용하고 있으므로 선택이 법적 선택 목록에있는 경우 양식 제출 만 허용하는 jQuery를 작성하지 않는 이유는 무엇입니까? 이것은 이미 작업중인 것처럼 보이는 커스텀 모듈 내에서 (drupal_add_js()를 사용하여) 수행 될 수 있습니다.

+1

글쎄, 사용자가 선택 메뉴를 조작 할 수 있다면, 그들은 또한 자바 스크립트를 조작 할 수있다. 그래서 나는 그것을 서버 측에서하고 싶다. 그렇다면 모든 기본 유효성 검사를 직접 작성해야합니까, 아니면 drupal 함수가 있습니까? 아약스가 없기 때문에 조작 된 양식을 자동으로 찾을 수 있습니다. – Wade

0

특히 쉬운 것은 아니지만 표준 방법은 콜백 제출을 위해 Drupals Forms API를 사용하는 것입니다. 즉, 비 js에서 발생하는 것과 동일한 유효성 검사를 받게됩니다. 제출하십시오.

Adding dynamic form elements using AHAH을 살펴보십시오. 시나리오와 정확히 일치하지는 않지만 (데이터를 저장하지 않고 새 요소를 추가하기 위해 콜백에 양식을 다시 작성하는 경우) 처리 워크 플로에 대한 설명이 유용합니다.

그런 다음 일반적인 방법으로 AJAX 양식 제출을 제공하려고 여러 모듈이있다 - 당신이 그것을 수행하는 방법에 대한 자신의 코드를 확인할 수 있습니다 (또는 어쩌면 그냥 그들을 사용을)

  • Ajax submit (만있다 관련 토론도 도움이 될 수 있습니다 - DEV 버전)
  • Ajax (에 '공식'자료)

마지막으로, efforts to put better support this functionality into core in Drupal 7가 있습니다.

+0

내 원래 게시물에 댓글을 추가했는데 댓글에 코드를 추가하는 방법을 알지 못했습니다 ... – Wade