Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Funkcja zwracająca tablicę danych, jak zmodyfikować funkcje aby otrzymać kilka tablic
pela222
post
Post #1





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 17.04.2013

Ostrzeżenie: (0%)
-----


Cześć,
postaram się jak najlepiej opisać co chcę osiągnąć.
Poniżej jak to jest teraz:

  1. //Rekomendacja
  2. private function getRecomendationWOL($documentData) {
  3. $policies = $documentData['policies']['WOL'];
  4.  
  5. $recomend = array();
  6. $count = count($policies);
  7. for($n=0; $n<$count; $n++){
  8. //--- START grupa 1 ---
  9. $recomend[] = array('Podstawowe informacje ('.$policies[$n]['lifeInsured'].') ... '.$policies[$n]['company'].': ');
  10. $recomend[] = array('Podstawowe cd. '.$documentData['primary']['firstName'].' to ?'.$policies[$n]['primary']['lifeCover'].'. '.$policies[$n]['DOC']['lifedis'].'');
  11. $recomend[] = array('Podstawowe cd. '.$policies[$n]['DOC']['lifechanges']);
  12. //--- START grupa 2 ---
  13. $recomend[] = array('Informacje GRUPA 2.');
  14. $recomend[] = array('Informacje GRUPA 2 cd. .');
  15. //--- START grupa 3 ---
  16. $recomend[] = array('Dodatkowo informacje GRUPA 3');
  17. foreach ($policies[$n]['DOC']['companydis'] as $value) {
  18. if(!is_array($value)){
  19. $recomend[] = array($value);
  20. }
  21. }
  22. }
  23. return $recomend;
  24. }


A potem wywołuję to tak i w ten sposób tworze formularz html:

  1. public function __construct(DocumentData $documentData = null) {
  2.  
  3. if (!$documentData) {
  4. $documentData = new DocumentData();
  5. }
  6. $documentData = $documentData->getData();
  7.  
  8. //throw new Exception('<pre>'.print_r($documentData['policies'],1). '</pre>');
  9.  
  10. $this->group1 = array (
  11. 'common1' => array (
  12. 'name' => 'Opis',
  13. 'elements'=> array (
  14. 'multiText' => array(
  15. 'type' => 'textMulti',
  16. 'label' => 'Wprowadzenie',
  17. 'optional' => true, // false -> bez checkbox
  18. 'partitions' => $this->getRecomendationWOL($documentData)
  19. ),
  20. ),
  21. ),
  22. );

No i jest ok i to działa.
Teraz wywołując $this->getRecomendationWOL otrzymuję
  1. [common1] => Array
  2. (
  3. [multiText] => Array
  4. (
  5. [0] => Podstawowe informacje (dane osoby) ... (dane firmy):
  6. [1] => Podstawowe cd.
  7. [2] => Podstawowe cd.
  8. [3] => Informacje GRUPA 2.
  9. [4] => Informacje GRUPA 2 cd.
  10. [5] => Dodatkowo informacje GRUPA 3
  11. [6] => Dodatkowo informacje GRUPA 3 cd.
  12.  


A to co chciałbym uzyskać to możliwość wywołania osobno danych dla Grupy 1 / Grupy 2 / Grupy 3

  1. $this->group1 = array (
  2. 'common1 => array (
  3. 'name' => 'Opis1',
  4. 'elements'=> array (
  5. 'multiText' => array(
  6. 'type' => 'textMulti',
  7. 'label' => 'GROUPA 1',
  8. 'optional' => true, // false -> bez checkbox
  9. 'partitions' => $this->getRecomendationWOL1($documentData)
  10. ),
  11. 'multiText1' => array(
  12. 'type' => 'textMulti',
  13. 'label' => 'GRUPA 2',
  14. 'optional' => true, // false -> bez checkbox
  15. 'partitions' => $this->RecomendationWOL2($documentData)
  16. ),
  17. 'multiText2' => array(
  18. 'type' => 'textMulti',
  19. 'label' => 'GRUPA 3',
  20. 'optional' => true, // false -> bez checkbox
  21. 'partitions' => $this->RecomendationWOL3($documentData)
  22. ),
  23. ),
  24. ),
  25. );


Dziękuję za informacje jak to osiągnąć i za wyrozumiałość.

Domyślam się że muszę zmodyfikować:
return $recomend;
na coś w stylu:
public function getValues() {
return array (
'group1' => $this->recomend[1][],
'group2' => $this->recomend[2][],
'group3' => $this->recomend[3][]
);
}

No ale nie potrafię sobie sam z tym poradzić...
Dziękuję jak zawsze za wyrozumiałość.

Temat do zamknięcia

wystarczyło dane w tablicy zapisać jako
  1. $recomend[group1][] = array('Podstawowe informacje ('.$policies[$n]['lifeInsured'].') ... '.$policies[$n]['company'].': ');
  2. ...
  3. $recomend[group2][] = array('Informacje GRUPA 2.');


a potem wywołać funkcje poprzez
  1. $this->getRecomendationWOL($documentData)[group1]
  2. ...
  3. $this->getRecomendationWOL($documentData)[group2]


Ten post edytował pela222 26.03.2021, 13:42:49
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
pela222
post
Post #2





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 17.04.2013

Ostrzeżenie: (0%)
-----


Ponieważ na podstawie tak stworzonej tablicy ze zmiennymi group tworze dynamicznie formularz html
Screen shot formularza html
i każda z zakładek HTML po lewej na tym screenshot (element listy nienumerowanej <li>) odpowiada kolejnej zmiennej group.

Czyli mam powiedzmy:
group1 -> "Wprowadzenie"
group2 -> "Potrzeby i Cele"
...
group5 -> "Term life + Mortgage"
group6 -> "Personal Accident"
group7 -> "Whole of Life"
...

A chciałbym, że jak mam więcej niż jedną polisę o typie Term Life + Mortgage" to żeby dla każdej było group51, group52 ect
Teraz iteruje mi po tych "wiecej niż jednej", ale wszystko jest w ramach group5 ... co Powoduje że dostaje tablicę w innej formie niż chcę.

Czyli jeśli mam 2 polisy o typie Term Life to generuje w ramach group5

  1. $this->group5 = array (
  2. 'common4' => array (
  3. 'name' => '? Rekomendacja Life Term + Mortgage',
  4. 'elements'=> array (
  5. 'multiText' => array(
  6. 'type' => 'textMultiList',
  7. 'label' => 'Na podstawie otrzymanych informacji, zalecam Wam / Tobie ubezpieczenie',
  8. 'optional' => true, // false -> bez checkbox
  9. 'partitions' => $this->getRecomendationTerLifInsData($documentData)[1]
  10. ),
  11. 'multiText1' => array(
  12. 'type' => 'textMultiList',
  13. 'label' => 'Dodatkowo omówiono i zaproponowano następujące cechy i elementy:',
  14. 'optional' => true, // false -> bez checkbox
  15. 'partitions' => $this->getRecomendationTerLifInsData($documentData)[2]
  16. ),
  17. 'multiText2' => array(
  18. 'type' => 'textMultiList',
  19. 'label' => 'Opis Ubezpieczyciela',
  20. 'optional' => true, // false -> bez checkbox
  21. 'partitions' => $this->getRecomendationTerLifInsData($documentData)[3]
  22. ),
  23. ),
  24. ),
  25. );


Tak że w ramach:
group5 mam teraz:
common4->elements->multiText->partitions mam opis nr1 dla kolejnych polis (jednej, dwóch lub więcej)
common4->elements->multiText1->partitions mam opis nr2 dla kolejnych polis (jednej, dwóch lub więcej)
common4->elements->multiText2->partitions mam opis nr3 dla kolejnych polis (jednej, dwóch lub więcej).

A chciałbym, aby to iterowanie odbywało się na poziomie zmiennej group

Czyli, abym otrzymywał:
group5_1
common4->elements->multiText->partitions mam opis nr1 dla pierwszej polisy
common4->elements->multiText1->partitions mam opis nr2 dla pierwszej polisy
common4->elements->multiText2->partitions mam opis nr3 dla pierwszej polisy

group5_2
common4->elements->multiText->partitions mam opis nr1 dla kolejnej polisy
common4->elements->multiText1->partitions mam opis nr2 dla kolejnej polisy
common4->elements->multiText2->partitions mam opis nr3 dla kolejnej polisy
...

I dzięki temu powstanie mi kilka sekcji HTML (dla każdej polisy Life Term + Mortgage osobno).

Chiałbym uniknąć tworzenia kolejnego poziomy tablicy dla group5 array () bo znów będą jakieś kombinacje alpejskie przy validacji html z tej tablicy
Czyli tutaj:
  1. foreach ($fields->getGroups() as $tabCode => $properties) {
  2. $tabNavHTML .= '<li><a href="#' . $tabCode . '" aria-controls="' . $tabCode . '" role="tab" data-toggle="tab">' . $properties['name'] . '</a></li>';
  3. $tabContentHtml .= '<div role="tabpanel" class="fields-container tab-pane row ' . (($i == 0) ? 'active' : '') . '" id="' . $tabCode . '">';
  4. if (!array_key_exists('elements', $properties)) {
  5. continue;
  6. }
  7. foreach ($properties['elements'] as $elementName => $definition) {
  8. /*
  9.   * walidator pól
  10.   */
  11. }


Ten post edytował pela222 6.04.2021, 14:35:15
Go to the top of the page
+Quote Post

Posty w temacie
- pela222   [PHP]Funkcja zwracająca tablicę danych   26.03.2021, 13:41:54
- - nospor   Nie $recomend[group1][] a $recomend[...   26.03.2021, 15:34:57
- - pela222   Ok to jeszcze jedno pytanie: [PHP] pobierz, plaint...   6.04.2021, 09:56:54
- - nospor   Ja nie kumam o co pytasz. Jakos to skomplikowane d...   6.04.2021, 10:51:45
- - pela222   Ok. Nie jestem autorem tego kodu, a jedynie modyfi...   6.04.2021, 13:11:38
- - nospor   Mi nie chodzilo stricte o zmienne prywatne, tylko ...   6.04.2021, 13:13:57
- - pela222   Ponieważ na podstawie tak stworzonej tablicy ze zm...   6.04.2021, 13:31:07
- - nospor   Dlatego ci mowie zrob z tego tablice z grupami. La...   6.04.2021, 14:26:22
- - pela222   Wiem że teraz to pewnie załamiesz ręce ale mam stw...   6.04.2021, 14:43:14
- - nospor   Hehe, no zalamalem   6.04.2021, 14:56:40
- - pela222   No się pośmialiśmy z mojego dyletanctwa i braku wi...   6.04.2021, 15:31:54
- - nospor   Nie. Caly czas ci mowie: Nie tysiac zmiennych dla ...   6.04.2021, 16:20:26
- - pela222   Jeśli o to chodziło to nie rozumiem co to wnosi......   6.04.2021, 17:12:41
- - nospor   Ano to wnosi, ze jest latwiejsze do pracy Nie roz...   7.04.2021, 09:39:25
- - pela222   RE: [PHP]Funkcja zwracająca tablicę danych   7.04.2021, 11:33:01
- - gino   można tak dodać do tablicy w zależności od warunku...   8.04.2021, 09:38:17
- - pela222   No tak można bo tak to miałem ... co prawda miałem...   8.04.2021, 09:43:14
- - gino   Cytat@nospor Mi nie chodzilo stricte o zmienne pry...   8.04.2021, 09:54:23
- - pela222   Ale wcześniej też tworzyłem jedną tablicę wielowym...   8.04.2021, 10:24:44
- - gino   Jak sam napisałeś CytatKiedyś tak to miałem (plik ...   8.04.2021, 10:46:08
- - pela222   [PHP] pobierz, plaintext // Tutaj zaczyna się sek...   8.04.2021, 12:14:32
- - gino   Po mojemu to tak: Kod private $groups = array...   8.04.2021, 13:43:01
- - pela222   RE: [PHP]Funkcja zwracająca tablicę danych   9.04.2021, 13:52:17
- - nospor   Strasznie ciezko sie czyta ten kod. Pewnie gino og...   9.04.2021, 14:12:48


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 17.10.2025 - 02:43