drupal ajax表单句子不执行

时间:2014-03-08 13:59:44

标签: drupal-7 drupal-forms drupal-ajax

我有一个动态表单,表单字段将取决于url。例如,当url剂量没有第二个参数时,将只有一个字段。当有参数时,还会有一个字段。

没有ajax就可以正常工作。当我使用ajax替换表单时,它总是只输出第一个字段。当我在ajax回调后使用dsm($ entry)时,它是空的。在ajax回调之前,里面有内容。

function quotes_form($form, &$form_state,$token){
$entry=arg(1);

$form['arrival_city_1'] = array(
    '#default_value'=>$arrival_city_1,
    '#type' => 'select',
    '#required' => TRUE,
    '#options'=>$arrival_array,

);
if(isset($entry)){

    $form['arrival_city_2'] = array(
    '#default_value' => $arrival_city_2,
    '#type' => 'select',
    '#options'=>$return_arrival_array,
          );

}

    $form['stop'] = array(
    '#type' => 'select',
    '#options' =>$stop_array,
    '#default_value' => $stop,
    '#ajax' => array(
        'callback' => 'ajax_example_autocheckboxes_callback',
        'method' => 'replace',
        'effect' => 'fade',
    ),

);

 }

function ajax_example_autocheckboxes_callback($form, $form_state){

   $form_outputs=render(drupal_get_form('quotes_form',$token));
   return array(
        '#type' => 'ajax',
        '#commands' => array(
            ajax_command_replace("#checkboxes-div", $form_outputs)
                )
            );
}

如何让它执行if(isset($ entry))部分?

1 个答案:

答案 0 :(得分:0)

如果你使用两个部分的路径,

arg(1)将为true。所以如果当前url是abc 只是转到abc / xyz

但我想知道你的其余代码..就像replace命令一样,它用id checkboxes-div替换了一些元素,但是我没有看到你用这个id定义任何元素