我有一个动态表单,表单字段将取决于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))部分?
答案 0 :(得分:0)
arg(1)将为true。所以如果当前url是abc 只是转到abc / xyz
但我想知道你的其余代码..就像replace命令一样,它用id checkboxes-div替换了一些元素,但是我没有看到你用这个id定义任何元素