Při nastavení výchozích hodnot, se nastaví jen některé
- Lawondyss
- Člen | 106
Při definici formuláře bez MVP, nastavuju výchozí hodnoty:
<?php
if(!$form->isSubmitted())
{
$form->setDefaults($defaults);
}
?>
Proměnná $defaults obsahuje tyto pole
array(23) {
'id' => string(2) '27'
'cislo' => string(2) '15'
'titul' => string(0) ''
'jmeno' => string(5) 'Hana'
'prijmeni' => string(9) 'Honzová'
'pohlavi' => string(1) 'Z'
'narozeni' => string(10) '1951-08-26'
'statni_obcanstvi' => string(2) 'CR'
'dosazene_vzdelani' => string(8) 'uciliste'
'ulice' => string(12) 'Mimoňská 281'
'mesto' => string(17) 'Stráž pod Ralskem'
'psc' => string(5) '47127'
'k_ulice' => string(0) ''
'k_mesto' => string(0) ''
'k_psc' => string(0) ''
'mobil' => string(9) '725702591'
'email' => string(0) ''
'ucet' => string(15) '1227570051/0800'
'nastup' => string(10) '2009-06-10'
'id_okres' => string(1) '3'
'id_urad_prace' => string(2) '11'
'id_zprostredkovatelka' => string(1) '0'
'id_user' => string(4) '1006'
}
A přesto se ve formuláři naplní jen některá políčka.
<form action="" method="post" id="frm-" onsubmit="return nette.validateForm(this)">
<div class="section">
<div class="ln">
<div class="ln_1_1"><label for="frm-cislo">Číslo</label></div>
<div class="ln_1_2"><input type="text" size="5" maxlength="10" class="text" name="cislo" disabled="disabled" id="frm-cislo" value="15" /></div>
</div>
<div class="ln">
<div class="ln_1_1"><label for="frm-titul">Titul</label></div>
<div class="ln_1_2"><input type="text" size="5" maxlength="30" class="text" name="titul" id="frm-titul" value="" /></div>
</div>
<div class="ln">
<div class="ln_1_1"><label class="required">Pohlaví</label></div>
<div class="ln_1_2"><input type="radio" name="pohlavi" id="frm-pohlavi-0" value="M" /><label for="frm-pohlavi-0">Muž</label><br /><input type="radio" name="pohlavi" id="frm-pohlavi-1" checked="checked" value="Z" /><label for="frm-pohlavi-1">Žena</label><br /></div>
</div>
<div class="ln">
<div class="ln_1_1"><label class="required" for="frm-jmeno">Jméno</label></div>
<div class="ln_1_2"><input type="text" size="25" maxlength="70" class="text" name="jmeno" id="frm-jmeno" value="Hana" /></div>
</div>
<div class="ln">
<div class="ln_1_1"><label class="required" for="frm-prijmeni">Příjmení</label></div>
<div class="ln_1_2"><input type="text" size="25" maxlength="70" class="text" name="prijmeni" id="frm-prijmeni" value="" /></div>
</div>
</div>
<div class="section">
<div class="ln">
<div class="ln_1_1"><label class="required" for="frm-narozeni">Datum narození</label></div>
<div class="ln_1_2"><input type="text" size="12" name="narozeni" id="frm-narozeni" value="26.08.1951" /></div>
</div>
<div class="ln">
<div class="ln_1_1"><label onclick="document.getElementById(this.htmlFor).focus();return false" class="required" for="frm-dosazene_vzdelani">Dosažené vzdělání</label></div>
<div class="ln_1_2"><select onfocus="this.onmousewheel=function(){return false}" name="dosazene_vzdelani" id="frm-dosazene_vzdelani"><option value="">-- vyberte --</option><option value="zakladni">základní škola</option><option value="uciliste" selected="selected">učiliště</option><option value="uciliste_maturita">učiliště s maturitou</option><option value="stredni">střední škola</option><option value="vyssi">vyšší odborná škola</option><option value="vysoka">vysoká škola</option></select></div>
</div>
<div class="ln">
<div class="ln_1_1"><label onclick="document.getElementById(this.htmlFor).focus();return false" for="frm-statni_obcanstvi">Státní občanství</label></div>
<div class="ln_1_2"><select onfocus="this.onmousewheel=function(){return false}" name="statni_obcanstvi" id="frm-statni_obcanstvi"><option value="CR" selected="selected">ČR</option><option value="SK">SK</option></select></div>
</div>
</div>
<div class="section">
<em>Trvalý pobyt</em>
<div class="ln">
<div class="ln_1_1"><label class="required" for="frm-ulice">Ulice</label></div>
<div class="ln_1_2"><input type="text" size="25" maxlength="35" class="text" name="ulice" id="frm-ulice" value="" /></div>
</div>
<div class="ln">
<div class="ln_1_1"><label class="required" for="frm-mesto">Město</label></div>
<div class="ln_1_2"><input type="text" size="25" maxlength="35" class="text" name="mesto" id="frm-mesto" value="" /></div>
</div>
<div class="ln">
<div class="ln_1_1"><label class="required" for="frm-psc">PSČ</label></div>
<div class="ln_1_2"><input type="text" size="5" maxlength="5" class="text" name="psc" id="frm-psc" value="47127" /></div>
</div>
</div>
<div class="section">
<em>Kontaktní adresa - odlišná od trvalého pobytu</em>
<div class="ln">
<div class="ln_1_1"><label for="frm-k_ulice">Ulice</label></div>
<div class="ln_1_2"><input type="text" size="25" maxlength="35" class="text" name="k_ulice" id="frm-k_ulice" value="" /></div>
</div>
<div class="ln">
<div class="ln_1_1"><label for="frm-k_mesto">Město</label></div>
<div class="ln_1_2"><input type="text" size="25" maxlength="35" class="text" name="k_mesto" id="frm-k_mesto" value="" /></div>
</div>
<div class="ln">
<div class="ln_1_1"><label for="frm-k_psc">PSČ</label></div>
<div class="ln_1_2"><input type="text" size="5" maxlength="5" class="text" name="k_psc" id="frm-k_psc" value="" /></div>
</div>
</div>
<div class="section">
<div class="ln">
<div class="ln_1_1"><label for="frm-mobil">Mobil/Tel.</label></div>
<div class="ln_1_2"><input type="text" size="12" maxlength="15" class="text" name="mobil" id="frm-mobil" value="725702591" /></div>
</div>
<div class="ln">
<div class="ln_1_1"><label for="frm-email">E-mail</label></div>
<div class="ln_1_2"><input type="text" size="25" maxlength="50" class="text" name="email" id="frm-email" value="" /></div>
</div>
<div class="ln">
<div class="ln_1_1"><label for="frm-ucet">Číslo účtu</label></div>
<div class="ln_1_2"><input type="text" size="25" maxlength="50" class="text" name="ucet" id="frm-ucet" value="1227570051/0800" /></div>
</div>
</div>
<div class="section">
<div class="ln">
<div class="ln_1_1"><label class="required" for="frm-nastup">Vstup do programu</label></div>
<div class="ln_1_2"><input type="text" size="12" class="datepicker" name="nastup" id="frm-nastup" value="10.06.2009" /></div>
</div>
</div>
<div class="ln_but">
<label>
<img src="img/bt_apply.png" alt="ikona" />
<input type="submit" class="button" name="save" id="frm-save" value="Uložit" /></label>
</div>
<div><input type="hidden" name="id" id="frm-id" value="27" /></div>
</form>
Shodnost pojmenovaných formulářových políček i indexů v předaném poli jsem kontroloval. Vůbec mě nenapadá, jak je to možné.
- Lawondyss
- Člen | 106
Tak se mi podařilo přijít na to, že to způsobuje kódování. Projekt je v win1250 ale formuláře jedou v utf8.
Zkusil jsem na hodnoty v proměnné $defaults použít funkci utf8_encode. Už to zobrazuje všechny zadané hodnoty, ale s nesmyslnými znaky.
<div class="section">
<em>Trvalý pobyt</em>
<div class="ln">
<div class="ln_1_1"><label class="required" for="frm-ulice">Ulice</label></div>
<div class="ln_1_2"><input type="text" size="25" maxlength="35" class="text" name="ulice" id="frm-ulice" value="Mimoòská 287" /></div>
</div>
<div class="ln">
<div class="ln_1_1"><label class="required" for="frm-mesto">Město</label></div>
<div class="ln_1_2"><input type="text" size="25" maxlength="35" class="text" name="mesto" id="frm-mesto" value="Strហpod Ralskem" /></div>
</div>
<div class="ln">
<div class="ln_1_1"><label class="required" for="frm-psc">PSČ</label></div>
<div class="ln_1_2"><input type="text" size="5" maxlength="5" class="text" name="psc" id="frm-psc" value="47127" /></div>
</div>
</div>
- David Grudl
- Nette Core | 8228
Pokud používáš Nette 0.9, lze nastavit kódování po vytvoření
formuláře přes $form->setEncoding('WINDOWS-1250');
(nicméně
uvnitř PHP budou všechny metody jako setDefaults nebo getValues() nadále
pracovat s UTF-8). Ve verzi 2 je podporované už jen UTF-8.
- Petr Mašát
- Člen | 101
Nebylo by rozumnější překódovat celý projekt z win1250 do utf8 a
v ní poté budeš mít vše → odpadnou ti všechny tyto problémy. Plus
umožníš si budoucí přesun na nette2.
A nebo existuje nějaký rozumný důvod zůstávat na win1250?
- Filip Procházka
- Moderator | 4668
tachyon napsal(a):
A nebo existuje nějaký rozumný důvod zůstávat na win1250?
o tom silně pochybuji :)
- Lawondyss
- Člen | 106
HosipLan napsal(a):
tachyon napsal(a):
A nebo existuje nějaký rozumný důvod zůstávat na win1250?
o tom silně pochybuji :)
Bohužel tím důvodem je čas. Je to totiž jeden starší IS po mém předchůdci, který se tu znova a znova zakládá s různými obměnami. Rád bych do něj zakomponoval Nette pro snazší úpravy, ale vzhledem k tomu, že už brzo se spustí další a tentokrát opravdu velký, mám jen málo času na zakomponování a současně potřebné úpravy.
- Petr Mašát
- Člen | 101
Každé rozumné IDE na PHP ti umožní hromadně nastavit celému projektu
kódování. Poté stačí změnit meta
tag v head
a
je hotovo. Práce na cca pět minut? Ušetříš si tím spousty
probdělých nocí.