Autor | Zpráva | ||
---|---|---|---|
kuba123 Profil * |
#1 · Zasláno: 20. 6. 2013, 13:03:28
Jak opravit toto:
$this->post[$k] = isset($_POST[$k]) ? $_POST[$k] : null; |
||
tiso Profil |
#2 · Zasláno: 20. 6. 2013, 13:13:53
kuba123: Kde to
$k berieš? Daj si ten riadok do cyklu foreach($k_possible_values as $k) { ... }
|
||
kuba123 Profil * |
#3 · Zasláno: 20. 6. 2013, 13:23:32 · Upravil/a: kuba123
Ono to je v cyklu:
if ($arr_null) foreach ($arr_null as $k) { $this->post[$k] = isset($_POST[$k]) ? $_POST[$k] : null; if ($_POST[$k]<>null) $c++; } Je to metoda, která se pokouší nastavit určitý argument převzatý při odesílání formuláře. Může nastavit buď jeden atribut nebo více. Každopádně, když ten argument tedy ten formulářový prvek nebyl odeslaný formulářem, pak bych chtěl nastavit $this->post[$k] jako null. Ale to hodí chybu protože ještě neexistuje... Ta metoda neobsahuje argument možných atributů.... Pouze argument co se má nastavit. Myslel jsem že by třeba mohla být nějaká funkce, která přidá nový prvek s indexem k do pole post Jestli teda neexistuje žádná funkce tak bych to vyřešil takto: @$this->post[$k] = null; $c=-1; if ($arr_null) foreach ($arr_null as $k) { @$this->post[$k] = null; $this->post[$k] = isset($_POST[$k]) ? $_POST[$k] : null; if ($_POST[$k]<>null) $c++; } |
||
tiso Profil |
#4 · Zasláno: 21. 6. 2013, 10:03:20
kuba123: ono to funguje, teda za predpokladu, že máš v tej premennej
$arr_null máš všetky možné hodnoty $k . Problém je ten riadok 3 (5), ten vráti
Notice: Undefined index: end in ... |
||
Tori Profil |
kuba123:
Taky by to šlo tak, že vlastnost post bude definovaná s výchozími hodnotami (anebo je tam předáte zvenčí z nějakého konfiguráku) a potom ty z nich, které se vyskytují i v $_POST, přepíšete: class NejakaTrida { public $post = array( 'end' => null, 'home' => null, 'next' => null, 'previous' => null, ); public function nejakaMetoda($postData = array()) { foreach ($this->post as $key => $val) { if (isset($postData[$key])) $this->post[$key] = $postData[$key]; } } } $obj = new NejakaTrida; $obj->nejakaMetoda($_POST); |
||
Časová prodleva: 11 let
|
0