노드 표시 페이지에 선택 메뉴가있는 간단한 양식이 있습니다. 내 콜백 함수에서 양식의 유효성을 검사하는 쉬운 방법이 있습니까? 유효성 검사를 통해 양식 배열에 값이 실제로 있는지 확인하기 위해 고급 것은 아닙니다. 예를 들어, 아약스가 없는데, 제 선택 메뉴에 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를 사용할 때 데이터가없는 것처럼 보입니다. 일종의 잃어버린.
목표가 정확히 무엇입니까? 당신이 여기 잘못된 길로 향하는 것처럼 들립니다. – googletorp
죄송합니다. 제가 너무 잘 설명하지 못했다면, 제 목표는 옵션이 폼 선택 배열 내에 있고 조작되지 않았는지 확인하는 것입니다. 예를 들어 내 선택 메뉴에 빨간색, 녹색, 파란색의 3 개 항목이 있다고 가정 해 보겠습니다. 이제 누군가 내 데이터베이스에 가짜 정보를 입력하려고 시도하고 네 번째 옵션 인 검은 색을 추가합니다. 아약스없이이 폼을 제출하면 드루팔 (Drupal)은 블랙이 배열에 존재하지 않았으며 불법적 인 선택이되었다는 것을 알게 될 것입니다. 그러나 콜백 함수를 사용하여 아약스를 사용하면이 기본 유효성 검사가 발생하지 않으므로 검정 값이 삽입됩니다. 원하는 것을 지우는 희망. – Wade