21. září bude sraz! Od 18.00 v restauraci Tradice v Praze u Anděla
Autor Zpráva
qteck
Profil
Ahoj,

napsal jsem si třídu pro obsluhu facebooku konkrétně pak pro zalogování a pro vytažení základního infa.

https://github.com/qteck/evelinkars

moje stránka je co se architektury týče navržená tímto způsobem:

index.php
v hlavičce - include model/pageManager.php

pageManager->modelIncluder()

a pak v html bloku article
pageManager->templateInclude();

pak někdo zadá adresu index.php?page=login

tak to includne soubor login.php ze složky model do hlavičky indexu a do těla login.php ze složky template.

a ten problém spočívá v tom, že v model/login.php mám třídu obsluhující ten facebook login a chci si vytáhnout nějaké proměnné v template/login.php, ale všechny funkce i proměnné z model/login.php jsou v template/login.php nedostupné.

Jak toto mohu vyřešit?


udělal jsem si test:

index_1
index_1_1
index_1_1_1

simuluje můj problém, šoupl jsem to na github https://github.com/qteck/evelinkars

Tahle simulace funguje. takkdo ví, možná nějaký problém s třídou pageManager?


Takjsem do:

http://evelinka.kerouac.cz/index_1.php

natvrdo vložil:
<?php

include "model/login.php";
include "templates/login.php";

a výsledek je:

oko: Ukaž h*vn*.

takže takhle to funguje, což ukazuje na problém s pageManagerem. V čem ten problém tví tam ale absolutně netuším.


Pravdou je, že jsou tam vlastně čtyři levely

pagemanager.php

included into index.php

v index php volány dva další includy pomocí metod z pageManager

model login .php
a
templates login.php


tak jsem tomu přidal jeden level a pořád šlape:
http://evelinka.kerouac.cz/index_1_2.php


okay, tak co se stalo: jsem to tam narubal na drzáka:
http://evelinka.kerouac.cz/index.php?page=login.php

do hlavičky
$
$pages = new Model\PageManager();
$pages->modelIncluder();

include 'model/login.php';
            
?

            <?php
            include "templates/login.php";
                $pages->templateIncluder();
            ?>

je to teďka takovej double call, obsah se vloží dvakrát, ale proměnné jenom jednou, proto bych rád zavedl diskusi na téma co je špatně s pageManager?

Díky za rady.


index.php vypadá takto:
https://github.com/qteck/evelinkars/blob/master/index.php

a pageManager takto:
https://github.com/qteck/evelinkars/blob/master/model/pageManager.php


pravděpodobně jde o to, že nejsou dostupné ven z té třídy?
qteck
Profil
   /* function modelIncluder()
    {
        $dir = __DIR__ . '/../model/';
        $this->checkDirectories($dir);
    }*/
    
    function modelIncluder_1()
    {
            include "model/login.php";
            include "templates/login.php";
    }
            
    function templateIncluder()
    {
        $dir = __DIR__ . '/../templates/';
        $this->checkDirectories($dir);
    }

Když je volám v indexu takto:
modelIncluder()
templateIncluder()

tak nešlapou.

když zavolám modelIncluder_1() tak šlapou.

Proč?
Keeehi
Profil
To že nešlapou je sice hezké, ale to nám o problému moc neřekne. Takhle chybová hláška z laděnky, ta by byla jiná. A stahovat a pouštět se mi to kvůli tomu nechce.

- když už používáš composer, tak proč nevyužiješ jeho autoloader?
qteck
Profil
Laděnka neříká nic.

ten problém je spíš v tom jak je to zkonstruovaný. Snažím se ten web psát v uvozovkách podle MVC a tak si chci vkládat model na začátek indexu před výstup a ak includovat templaty kde chci načítat proměnné které jsem si v hlavičce v modelu naincludoval předtím.

ten problém zdá se tkví v tom, že třída pageManager a ty jednotlivé metody udělá ony proměnné v template nedostupné. ale k tomu založím nové téma protože tady jsem to trochu přehnal.

každopádně díky. jak na autoload přes composer pro vlastní třídy jsem předtím neznal.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0