Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Wangarad 11. 11. 2019, 11:50:56
-
Dobry den.
Mam aplikaciu v PHP. Je to znovu prebrana vec kde treba spravit par uprav. V principe pouziva subor function.php kde su vsetky funkcie ktore sa uz len dalej volaju na stranke. Problem je ze mam funkciu
function formValueToReadableValue($approvalFlowId, $fieldName, $fieldValue, $fileName) {
global $settings;
if(!isset($settings['readable_fields'][$approvalFlowId][$fieldName])) {
return $fieldValue;
}
if($settings['readable_fields'][$approvalFlowId][$fieldName]['special'] === false) {
if(isset($settings['readable_fields'][$approvalFlowId][$fieldName]['values'][$fieldValue])) {
return $settings['readable_fields'][$approvalFlowId][$fieldName]['values'][$fieldValue];
} else {
return 'N.A.';
}
}
if($settings['readable_fields'][$approvalFlowId][$fieldName]['special'] === true && (!isset($settings['readable_fields'][$approvalFlowId][$fieldName]['upload']) || $settings['readable_fields'][$approvalFlowId][$fieldName]['upload'] === false)) {
if(isset($settings['readable_fields'][$approvalFlowId][$fieldName]['suffix'])) {
return $fieldValue . ' ' . $settings['readable_fields'][$approvalFlowId][$fieldName]['suffix'];
}
if(isset($settings['readable_fields'][$approvalFlowId][$fieldName]['prefix'])) {
if($settings['readable_fields'][$approvalFlowId][$fieldName]['prefix'] == '€') {
return '€ ' . number_format($fieldValue, 0, '.', ',');
}
}
}
if($settings['readable_fields'][$approvalFlowId][$fieldName]['special'] === true && (isset($settings['readable_fields'][$approvalFlowId][$fieldName]['upload']) || $settings['readable_fields'][$approvalFlowId][$fieldName]['upload'] === true)) {
return '<a target="_blank" href="/download?file=' . $fieldValue . '">' . (!empty($fileName) ? $fileName : $fieldValue) . '</a>';
}
return $fieldValue;
}
Ta by mala sama o sebe osetrovat vystup a sice ze ak je pole cost tak automaticky prida Euro symbol atd atd...
Tu je problem pretoze v programe je to pouzite celkom 4x na 4 roznych miestach.
Pouzivam to takto
<tr>
<td><b>Requester</b></td><td><?= $flows[0]->firstname ?> <?= $flows[0]->lastname ?><br /></td>
</tr>
<?php foreach($fields as $field) { ?>
<td><b><?php
$field_new_name = $field->field_name;
$field_new_name = str_replace("_"," ",$field_new_name);
$field_new_name = ucfirst($field_new_name);
echo $field_new_name ?></b></td><td><?= formValueToReadableValue($flows[0]->approval_flow_id, $field->$field_name, $field->field_value, $field->filename) ?> <br /></td>
</tr>
<?php } ?>
A tu je problem. Na 1 stranek to ukazuje super ako ma teda namiesto 100 je 100Eur atd atd.
Ten isty kus kodu mi ale nefunguje na ostatnych strankach kde je presne to iste. Ale dostavam chybu hned na prvej polozke Quote order number
Fatal error: Cannot access empty property in 42....
Vedel by niekto poradit?
-
Evidentně jsou v parametrech $approvalFlowId a $fieldName takové hodnoty, pro které nejsou definovány odpovídající hodnoty v $settings.
Je snad jasné, že tento kousek kódu je odporným hnusem. Dá se to však napravit.
-
Kit : Dakujem uz som zistil kde je preklep. No pomaly to opravujem funkciu po funkcii. Pan programator to mal ako celkom dobry bussines. Vsetko hard-code. Niekto do firmy prisiel alebo dal vypoved? Bez programatora si si neskrtol. Kazdeho pekne rucne odmazat alebo dopisat do prislusnej podstranky. Ale zasa za cca 2000Eur za mesiac ako technicka podpora nemal panko zly bussines plan.
-
Inu mal som tam preklep a sice
$field->$field_name = $field->field_name
Ale aj tak mi to nechce konvertovat a vypisuje len raw data s db.
-
Docela mi pomohlo, když jsem hned za řádek global dal tohle:
$flowId = $settings['readable_fields'][$approvalFlowId][$fieldName] ?? null;
a provedl substituci na ostatních místech.
Teď už vidím, že refaktoring bude hračka.