miras
6.10.2016, 11:28:56
Witam, mam 3 pliki
index.php
{
i tu includuje logika.php
i widok.php
}
w logika.php mam:
$test = "test";
w widok.php:
dlaczego ta zmienna nie ma zasiegu ? Jak temu zaradzić?
nospor
6.10.2016, 11:31:04
manual php -> zasieg zmiennych
I wszystko jasne
miras
6.10.2016, 11:38:15
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
6.10.2016, 11:38:19
przecież to działa....
index.php
<?php
include 'test.php';
include 'view.php';
test.php
<?php
$test = 'test.php';
view.php
<?php
miras
6.10.2016, 11:42:08
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
$productsList = $products->getProducts();
widok.php
while ($product = $productsList->fetch()) {
// ...
}
w tym przypadku juz nie działa..
viking
6.10.2016, 11:47:22
A widok to pewnie też metoda np. showProducts()? Musiałbyś do niej przekazać $productsList;
miras
6.10.2016, 11:50:45
Niee, w widoku jest tylko ta pętla, która wyświetla dane z logiki
while ($product = $productsList->fetch()) {
// ...
}
nospor
6.10.2016, 11:54:00
Sprawdziles w ogole czy $productsList = $products->getProducts(); zwrocilo ci poprawne wyniki? Zrob w logika kod ktory probujesz zrobic w widok
miras
6.10.2016, 11:57:43
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?
$SkinsBox->controller($_GET['page']);
$SkinsBox->view($_GET['page']);
i w tych metodach mam switch'a i dalej już tylko includuje pliki z danego katalogu
viking
6.10.2016, 12:01:29
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
6.10.2016, 12:05:01
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
6.10.2016, 12:11:23
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
6.10.2016, 12:17:58
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
6.10.2016, 12:24:14
Podalem ci przyklad jak to moze wygladac. Tam wlasnie kontroler wstrzykuje dane do widoku
viking rowniez podal ci przyklad.
miras
6.10.2016, 12:30:36
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
6.10.2016, 12:35:19
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...
viking
6.10.2016, 12:41:45
Nie musisz się jakoś szczególnie wgłębiać w działanie żeby dostać przykład ogólnej idei MVC.
public function indexAction()
{
// w twoim przypadku $_GET['page']
$page = $this->params()->fromRoute('page', 1);
//pobieranie danych z repozytorium na bazie danych z $page
// repozytorium czyli zbiór danych w skrócie, u ciebie productsList
$advertList = $this->advertRepository->getAdvertsByPage(
null, false, $page, 15
);
// jak nic nie zwrócone redirect
if (!$advertList) {
return $this->redirect()->toRoute('advert-backend', [], true);
}
// tu jest view model
$viewModel = new ViewModel();
// ustawienie w widoku danych z modelu
$viewModel->setVariable('advertList', $advertList);
// zakończenie czyli akurat we frameworku, w podstawowej formie będzie to posłanie danych do przeglądarki
return $viewModel;
}
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.