Ciao,
stò cercando di modificare alcune cose in un mio script.
In pratica cerco un modo migliore di programmare l sito e una maggiore separazione tra php ed html.
Fino ad ora ho sempre fatto cosi:
Pagina form.html:
codice:
<form id="form" name="$nomeform" method="post" action="$pagina_go_form?option=$optionform&action=$actionform$form_id_to_update" enctype="multipart/form-data">
<label classe="classe">Label</label>
<input class="classe" name="titolo_pagina" id="titolo_pagina" value="$value_titolo_pagina" type="text" title="Titolo pagina" />
<label classe="classe">Corpo della pagina</label>
<textarea class="class" id="corpo_pagina" name="corpo_pagina" title="Corpo pagina">$value_corpo_pagina</textarea>
...
Le variabili che vedete annidate nel codice html vengono convertite nel rispettivo valore per cui non preoccupatevi di quello.
Questa pagina viene inclusa nel sito tramite la funzione get_template(f'orm.html'); nella pagina php.
Adesso, vorrei evitare di rendere fisso il form nel template e ho creato delle funzioni che creano il form direttamente nella pagina php, cosa che ho visto fare a molti programmatori.
funzioni.php
Codice PHP:
function setForm($array)
{
global $config;
$numargs = func_num_args();
$input = '';
while(list($key,$value) = each($array))
{
$input .= "$key=\"$value\" ";
}
$input = '<form ' . $input . '>';
$arg = func_get_args();
for($n = 1; $n < $numargs; $n++)
{
$input .= $arg[$n];
}
$input .= '</form>';
return $input;
}
function setTextInput($array)
{
global $config;
$input = '';
while(list($key,$value) = each($array))
{
$input .= "$key=\"$value\" ";
}
$input = '<input ' . $input . '/>';
return $input;
}
Queste funzioni vengono adoperate in questo modo
form.php
Codice PHP:
echo setForm
(
array('name'=>'nomeform','method'=>'post','action'=>'form.php'),
# campo input con label
setLabel
(
'valoreid','classlabel',
setTextInput
(
array('type'=>'text','class'=>'classe','name'=>'nome','value'=>'valore',
'title'=>'titolo','ddv-required'=>'true','id'=>'valoreid')
)
,'valorelabel: '
),
# campo input con label
setLabel
(
'valorid','classlbel',
setTextInput
(
array('type'=>'text','class'=>'classe','name'=>'nome','value'=>'valore',
'title'=>'titolo','ddv-required'=>'true','id'=>'valorid')
)
,'valorlabel: '
),
# campo input con label
setLabel
(
'valorid','classlbel',
setTextInput
(
array('type'=>'text','class'=>'classe','name'=>'nome','value'=>'valore',
'title'=>'titolo','ddv-required'=>'true','id'=>'valorid')
)
,'valorlabel: '
),
'<input type="submit" value="Invia"'
);
La mia domanda è:
Secondo il parere di persone più esperte, questo modo di fare migliora o peggiora lo script?
Considerando che il form non deve poter essere modificato dal template, ma deve essere uguale anche se si cambia template al sito è corretto usare questo tipo di funzioni o un semplice echo del form pronto sarebbe stato meglio?
Inoltre dato che alcuni dati che adesso vedete serviti alle funzioni saranno dinamici e che con dei cicli si possono creare dei form più grandi e completi, ritenete questa soluzione valida?
Grazie