Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z zasięgiem zmiennych
Forum PHP.pl > Forum > Przedszkole
miras
Witam, mam 3 pliki


  1. index.php
  2. {
  3. i tu includuje logika.php
  4. i widok.php
  5.  
  6. }




w logika.php mam:

  1. $test = "test";



w widok.php:


  1. echo $test;



dlaczego ta zmienna nie ma zasiegu ? Jak temu zaradzić?
nospor
manual php -> zasieg zmiennych
I wszystko jasne wink.gif
miras
Od tego zacząłem natomiast nie znalazłem tego, co mnie konkretnie interesuje.

Chciałbym się jeszcze dowiedzieć w jaki najlepszy sposób przekazać $test z logiki do widoku?
Pyton_000
przecież to działa....

index.php
  1. <?php
  2.  
  3. include 'test.php';
  4. include 'view.php';

test.php
  1. <?php
  2.  
  3. $test = 'test.php';

view.php
  1. <?php
  2.  
  3. echo $test;
miras
Dobra, chyba podałem zły przykład, w logika.php pobieram dane z metody, a samo includowanie tych plików też jest robione za pomocą metody,



logika.php
  1. $productsList = $products->getProducts();




widok.php

  1. while ($product = $productsList->fetch()) {
  2. // ...
  3. }


w tym przypadku juz nie działa..
viking
A widok to pewnie też metoda np. showProducts()? Musiałbyś do niej przekazać $productsList;
miras
Niee, w widoku jest tylko ta pętla, która wyświetla dane z logiki

  1. while ($product = $productsList->fetch()) {
  2. // ...
  3. }
nospor
Sprawdziles w ogole czy $productsList = $products->getProducts(); zwrocilo ci poprawne wyniki? Zrob w logika kod ktory probujesz zrobic w widok wink.gif
miras
Tak, jak wrzucam kod z logika.php do widoku to wszystko działa.

Może to przez to, że w taki sposób to includuje?


  1.  
  2. $SkinsBox->controller($_GET['page']);
  3. $SkinsBox->view($_GET['page']);
  4.  



i w tych metodach mam switch'a i dalej już tylko includuje pliki z danego katalogu
viking
Słabo masz to zrobione. Kontroler integruje dane z modeli i wstrzykuje je do widoku. U ciebie to wszystko jest zupełnie oddzielnie. Poza tym nie wiemy co to generuje więc jak można pomóc?
miras
Konkretnie o czym mowa, "nie wiem co generuje" ? getProducts pobiera z bazy rekordy i żadnego zadania więcej nie ma.

Ja się wcale nie upieram, że muszę zostać przy takim rozwiązaniu, po prostu chciałbym się dowiedzieć jak to "zacząć", żeby później było mi wygodnie...


Czyli - w jaki sposób wstrzykiwać dane z kontrolera do widoku?
viking
Chodzi o to że rzucasz jakimiś losowymi metodami a my nie wiemy co zawierają. Definicję i zastosowanie znajdziesz w dokumentacji dowolnego frameworka.
Przykłądowy kontroler https://github.com/zf3buch/zendframework-ce...yController.php
miras
hmm, to jest bardzo prosta aplikacja, ale po prostu chciałbym ją napisać w "porządny" sposób. Mógłbyś mi tak w krótkim łopatologicznym przykładzie podpowiedzieć w jaki prosty sposób "połączyć" kontroler z widokiem?
nospor
Podalem ci przyklad jak to moze wygladac. Tam wlasnie kontroler wstrzykuje dane do widoku

viking rowniez podal ci przyklad.
miras
Ehh, nie rozumiem...

W którym miejscu mi pokazałeś jak mam to zrobic?


@ vikinga link faktycznie jest, tylko, że musiałbym się zapoznać z tym FW, żeby to zrozumieć, a chciałbym na szybko jakiś prosty przykład i tyle, a później już się zajmę jakimś FW.
nospor
Cytat
Ehh, nie rozumiem...

W którym miejscu mi pokazałeś jak mam to zrobic?
W poprzednim temacie gdzie mieszales logike z widokiem. Oj chlopie, za duzo masla i skleroze juz masz... tongue.gif
viking
Nie musisz się jakoś szczególnie wgłębiać w działanie żeby dostać przykład ogólnej idei MVC.


  1. public function indexAction()
  2. {
  3. // w twoim przypadku $_GET['page']
  4. $page = $this->params()->fromRoute('page', 1);
  5.  
  6. //pobieranie danych z repozytorium na bazie danych z $page
  7. // repozytorium czyli zbiór danych w skrócie, u ciebie productsList
  8. $advertList = $this->advertRepository->getAdvertsByPage(
  9. null, false, $page, 15
  10. );
  11. // jak nic nie zwrócone redirect
  12. if (!$advertList) {
  13. return $this->redirect()->toRoute('advert-backend', [], true);
  14. }
  15.  
  16. // tu jest view model
  17. $viewModel = new ViewModel();
  18. // ustawienie w widoku danych z modelu
  19. $viewModel->setVariable('advertList', $advertList);
  20. // zakończenie czyli akurat we frameworku, w podstawowej formie będzie to posłanie danych do przeglądarki
  21. return $viewModel;
  22. }


Trudne?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.