• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Przesyłanie tablicy z PHP przez HTML (Twig) do JS - fetch()

Object Storage Arubacloud
0 głosów
421 wizyt
pytanie zadane 3 maja 2021 w JavaScript przez Bartek030 Obywatel (1,460 p.)

Witam,

Chciałem prosić o pomoc przy przenoszeniu danych (konkretnie tablic) z PHP do JS. Obecnie pracuje nad pewnym projektem, opartym o wzorzec MVC, gdzie widoki generuje z wykorzystaniem silnika Twig.

W kontrolerze wydobyłem dane z modelu i przesłałem je do widoku w następujący sposób:

public function showAction() {
        $balance = new Operation($_POST);
        $balance -> balanceTime = $this -> route_params['period'];


        $incomeData = Operation::getIncomeData($balance, $_SESSION['user_id']);
        $expenseData = Operation::getExpenseData($balance, $_SESSION['user_id']);

        $incomeSummary = static::operationSummary($incomeData);
        $expenseSummary = static::operationSummary($expenseData);
        $balanceSummary = $incomeSummary - $expenseSummary;

        View::renderTemplate('Balance/results.html', [
            'incomeData' => $incomeData,
            'expenseData' => $expenseData,
            'incomeSummary' => $incomeSummary,
            'expenseSummary' => $expenseSummary,
            'balanceSummary' => $balanceSummary
        ]);
    }

Następnie w widoku dane generowałem w tabeli w następujący sposób (jeden z przykładów):

<tbody>
    {% for income in incomeData %}
        <tr class="test">
        <th scope="row"></th>
        <td>{{ income.name }}</td>
        <td>{{ income.amount }}</td>
        <td>{{ income.date_of_income }}</td>
        </tr>
    {% endfor %}
</tbody>

Teraz chciałbym te dane, które przesłałem do widoku, przesłać również do JS. I tutaj pojawia się problem, ponieważ o ile pojedyncze zmienne mogę z łatwością pobrać za pomocą selektora lub po prostu tworząc zmienną w skrypcie w widoku:

let zmienna = '{{ balanceSummary }}';

o tyle z tablicami mam problem, ponieważ tworzenie identyfikatorów dla każdej linijki wydaje się bez sensu i mało praktyczne, a tworzenie zmiennej w skrypcie w widoku w takiej postaci jak wyżej, zwraca błąd, że nie można konwerterować tablicy do stringa. Czy mógłby ktoś poradzić jeszcze jakiś inny sposób?

 

Próbowałem jeszcze wykorzystać do tego funkcję fetch(). Natomiast tutaj mam taki problem, że przesyłane dane nie są zapisywane w formacie json, więc nie mogę ich w żadem sposób parsować (albo przynajmniej nie jestem tego świadom, że mogę). Jestem w stanie nawiązać połączenie ze stroną i wydobyć parametry tego połączenia, natomiast w jaki sposób mogę wydobyć tylko te konkretne dane, które przesyłam? Do tej pory udało mi się jedynie wydobyć całą strukturę widoku (pliku html) jako tekst, ale to jest raczej marne rozwiązanie smiley. Nie jestem pewien ale być może odpowiednie ustawienie headera mogłoby tutaj pomóc. Jeśli tak to mam ogromną prośbę o pomoc z jego konfiguracją. Zależy mi na tym aby w JS znajdowała się tablica z taką samą strukturą jaka wychodzi z kontrolera.

1 odpowiedź

+1 głos
odpowiedź 3 maja 2021 przez Ehlert Ekspert (212,990 p.)
wybrane 3 maja 2021 przez Bartek030
komentarz 3 maja 2021 przez Bartek030 Obywatel (1,460 p.)

Bardzo dziękuję za wskazówkę. Tablice przesyłam już bez problemu. Natomiast musiałem jeszcze trochę pokopać, ponieważ twig zamieniał znaki cudzysłowia, oddzielające dane, na encje. Przez to nie mogłem sparsować tabeli do JS. Wyjaśnienie jest tutaj

 

Podobne pytania

+1 głos
1 odpowiedź 357 wizyt
pytanie zadane 2 kwietnia 2021 w JavaScript przez Oskar Szkurłat Bywalec (2,780 p.)
0 głosów
2 odpowiedzi 2,177 wizyt
pytanie zadane 27 listopada 2019 w JavaScript przez mariozz Nowicjusz (140 p.)
0 głosów
1 odpowiedź 454 wizyt
pytanie zadane 9 października 2018 w JavaScript przez Votex Początkujący (310 p.)

92,677 zapytań

141,581 odpowiedzi

320,061 komentarzy

62,039 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...