Drupal 6: göndermek üzerine form_state değerleri boş

2 Cevap php

Ben Drupal 6 özel bir form oluşturmak için çalışıyorum ve her şey yeni bir giriş veritabanında oluşturulur ancak tüm $ form_state değerleri boş gönderilirse ne zaman dahil olmak üzere aşağıdaki kod ile tamam çalışmak gibi görünüyor. Ne eksik?

<?php
function rate_form($form_state) {
  $form = array();
  $form['rate']['name'] = array(
    '#type' => 'textfield',
    '#title' => t('Name'),
    '#size' => 30,
    '#maxlength' => 100,
    '#required' => TRUE,
  );
  $form['rate']['description'] = array(
    '#type' => 'textarea',
    '#title' => t('blah, blah'),
    '#maxlength' => 1500,
  );
  $form['rate']['submit'] = array('#type' => 'submit', '#value' => t('Rate!'));
  return $form;
}

print drupal_get_form($form_id);

function rate_form_submit($form_id, &$form_state) {
  db_query("INSERT INTO {rate_comments} (name, description) VALUES ('%s', '%s')", $form_state['values']['rate']['name'], $form_state['values']['rate']['description']);
  drupal_set_message(t('Thank you! Your rating has been added.'));
}
?>

2 Cevap

Eğer belirttiğiniz sürece, $form_state['values'] düz bir dizi ve böylece değerler yer alacak bir iç içe geçmiş biri olacaktır:

$form_state['values']['name']
$form_state['values']['description']

Sen devel modülünü kullanarak oldukça kolay bu sorunu kendiniz ayıklanacak olabilirdi. Bu etken madde ile yapabileceği

function rate_form_submit($form_id, &$form_state) {
    dpm($form_state);
    //db_query("INSERT INTO {rate_comments} (name, description) VALUES ('%s', '%s')", $form_state['values']['rate']['name'], $form_state['values']['rate']['description']);
    drupal_set_message(t('Thank you! Your rating has been added.'));
}

dpm size / diziler ve sınıf nesneleri içine değerlerini gizlemek göstermek için tıklayın değişken, güzel bir görsel temsilini oluşturur, devel tanımlanmış olduğu bir işlevdir. Eğer gerekli değerlerin saklandığı yere ince mümkün olurdu bu bilgi kullanma. Bu çalışma zamanında değişkenleri incelemek istiyorum bu gibi durumlarda, büyük bir araç bulunuyor.

Bu yardımcı olabilir

implode(arg(),'/');