(SOLUCIONADO) Como poner valor por defecto en un Form_Select
-
Hola
Ando implementado una GUI para https://forum.pfsense.org/index.php?topic=112715.msg628966#msg628966
Por ahora, mi primera duda es:
En un formulario:
/* Javier Castañon - 2016 - https://javcasta.com mywpad.php */ require("guiconfig.inc"); require_once("config.inc"); require_once("globals.inc"); require_once("pfsense-utils.inc"); require_once("functions.inc"); require_once("/usr/local/www/widgets/include/interfaces.inc"); global $config, $g; $config = parse_config(true); $lasips = array(); $lasinterfaces = array(); $lasintsys = array(); $lasmasks = array(); $ifdescrs = get_configured_interface_with_descr(); $i = 0; foreach ($ifdescrs as $ifdescr => $ifname) { $ifinfo = get_interface_info($ifdescr); //print_r($ifinfo); if ($ifinfo['status'] == "up" || $ifinfo['status'] == "associated") { $i++; if (strpos($ifname, "LAN") !== false) { $choose = $i; //echo $i . " " . "\033[32m".$ifname." - ".$ifinfo['ipaddr']." \033[0m \n"; $lasips[] = $ifinfo['ipaddr']; $lasmasks[] = $ifinfo['subnet']; $lasinterfaces[] = $ifname; $lasintsys[] = array_search ("$ifname", $ifdescrs); } else { //echo $i ." " . $ifname . ' ' . $ifinfo['ipaddr'] . " \033[0m \n"; $lasips[] = $ifinfo['ipaddr']; $lasmasks[] = $ifinfo['subnet']; $lasinterfaces[] = $ifname; $lasintsys[] = array_search ("$ifname", $ifdescrs); } } } //end foreach /* if (!is_array($config['mywpad']['config'])) $config['mywpad']['config'] = array(); $a_mywpad = &$config['mywpad']['config']; */ $a_mywpad = Array(); include("head.inc"); $form = new Form; $section = new Form_Section('My WPAD Config.'); /* array( '0' => 'LAN', '1' => 'WAN', '2' => 'OPT1' ) */ $section->addInput(new Form_Select( 'interface', 'Interface', 'LAN', // Initial value. If it matches on of the selectors it will be highlighted $lasinterfaces ))->setHelp('Usually LAN interface' . ' ' . '---'); $section->addInput(new Form_Input( 'ip', 'IP', 'text', $lasips[$choose - 1] ))->setHelp("IP where nginx is listen proxy.pac / wpad.dat /wpad.da queries"); $section->addInput(new Form_Input( 'port', 'Port', 'text', 80 ))->setHelp("Port : Usually port tcp 80"); $section->addInput(new Form_Textarea( 'proxypac', 'proxy.pac', $pconfig['proxypac'] ))->setHelp("The **proxy.pac** file."); $form->add($section); $btncncl = new Form_Button( 'cancel', 'Cancel' ); $btncncl->removeClass('btn-primary')->addClass('btn-danger'); $form->addGlobal($btncncl); print $form; ?>
Al añadir un "Form_Select", ¿como hago para que autoseleccione el valor por defecto de la interfaz LAN??
$section->addInput(new Form_Select(
'interface',
'Interface',
'LAN', // Initial value. If it matches on of the selectors it will be highlighted
$lasinterfaces
))->setHelp('Usually LAN interface' . '
' .
'–-');Salu2
-
Hola.
Tras hacer pruebas, ya está solucionado:
Simplemente poniendo el índice (valor númerico) del array
$section->addInput(new Form_Select( 'interface', 'Interface', $choose - 1, // Initial value. If it matches on of the selectors it will be highlighted $lasinterfaces ))->setHelp('Usually LAN interface');
Y el Form_Select autoselecciona el índice $choose-1 del array $lasinterfaces
Salu2
-
Hola.
Para no abrir otro hilo, sigo en este con mis dudas y experiencia en la GUI para el script WPADcliSetup.php.
Ahora mi problema era como actualizar los datos del formulario al cambiar el valor del Form_Select.
Lo solucioné así:
//... if (isset($_GET['elchoose'])) { $choose = $_GET['elchoose']; } $section->addInput(new Form_Select( 'interface', 'Interface', $choose - 1, // Initial value. If it matches on of the selectors it will be highlighted $lasinterfaces ))->setHelp('Usually LAN interface'); //... //al final print $form; //mywpad.php?choose=1 ?>
Con javascript defino un "Listener" para que "escuche" el evento "change" del Form_Select (obtenido por su Id), y al cambiar en el Form_Select la interfaz, los datos relacionados en el formulario cambian y se corresponden.
Y funciona :)
Salu2
–-