21. září bude sraz! Od 18.00 v restauraci Tradice v Praze u Anděla
Autor Zpráva
BitaSk
Profil
Zdravím všechny, prosím Vás, mám vytvořený jednoduchý MVC model, s velkou pomocí jedné stránky. Vždy jsem dělal bez MVC weby ale časem přehlednost úplně vymizela. Toto je ideálka ale potřeboval bych pokud zadam url/admin , tak aby vše probihalo stejně jako ve frontendu.

web je na uložto, jelikož mi sem nejde zadat adresa uložta tak si toto prosím dejte za url uložta ke stažení celého projektu, je to v netbeans /xWwV8QxC/mvc-zip

heslo: mvcpass

Již jsem mockrát se pokoušel vytvořit složku Admin a doní skopírovat vše co je předtím pak upravit kód aby to sedělo, ale zatím se mi to nepovedlo. Všem děkuji za pomoc. Jde mi jen oto abych měl i backend který funguje na stejném principu jako frontend.
Alphard
Profil
Nemyslím, že se někomu bude chtít stahovat nějaké archivy a prohlížet je. Dejte sem relevantní ukázku kódu a jestli celý návrh vychází z nějakého online návodu, odkažte i ten návod.
Obecné řešení je takové, že se vše směruje na index v rootu a adresa samotná se parsuje až tam. Neměl by být problém zkontrolovat, jestli url vstup nezačíná řetězcem 'admin' a pokud ano, nastavit si nějaký příznak a pro dalšího zpracování ho odmazat.
BitaSk
Profil
Alphard:
Ano máte pravdu, tak jsem to i udělal. Budu se dál pokoušet. Jinak link je www.itnetwork.cz/php/mvc


Tak to zkusím sem publikovat kód.

Tohle je RouteController frontendu, který potřebuji upravit i pro Admin

class RouteController extends Controller {

    protected $Controller;

    public function zpracuj($parametry) {
        $naparsovanaURL = $this->parsujURL($parametry[0]);

        if ($naparsovanaURL[0] != "Admin") { // zde je úprava pro admin

            if (empty($naparsovanaURL[0]))
                $this->presmeruj('main');

            $tridaControlleru = $this->pomlckyDoVelbloudiNotace(array_shift($naparsovanaURL)) . 'Controller';

            if (file_exists('Controllers/' . $tridaControlleru . '.php'))
                $this->Controller = new $tridaControlleru;
            else
                $this->presmeruj('error');

            $this->Controller->zpracuj($naparsovanaURL);

            $this->data['titulek'] = $this->Controller->head['titulek'];
            $this->data['popis'] = $this->Controller->head['popis'];
            $this->data['klicova_slova'] = $this->Controller->head['klicova_slova'];

            $this->view = 'layout';
        }else {


            $this->presmeruj('Admin'); // přesměrování do složky admin
        }
    }

    private function parsujURL($url) {
        $naparsovanaURL = parse_url($url);
        $naparsovanaURL["path"] = ltrim($naparsovanaURL["path"], "/");
        $naparsovanaURL["path"] = trim($naparsovanaURL["path"]);
        $rozdelenaCesta = explode("/", $naparsovanaURL["path"]);
        return $rozdelenaCesta;
    }

    private function pomlckyDoVelbloudiNotace($text) {
        $veta = str_replace('-', ' ', $text);
        $veta = ucwords($veta);
        $veta = str_replace(' ', '', $veta);
        return $veta;
    }

}

ZDE MÁM CONTROLLER frontendu, který potřebuji upravit pro Admin

abstract class Controller {

    protected $data = array();
    protected $view = "";
    protected $head = array('titulek' => '', 'klicova_slova' => '', 'popis' => '');

    abstract function zpracuj($parametry);

    public function vypisview() {
        if ($this->view) {
            extract($this->data);
            require("views/" . $this->view . ".phtml");
        }
    }

    public function presmeruj($url) {
        header("Location: /$url");
        header("Connection: close");
        exit;
    }

}

TOTO VŠE JE FUNKČNÍ A OK, potřebuji to, aby když mám ve složce Admin skopírovanou strukturu celého frontendu, tak aby to fungovalo stejně tak i v adminu, jen aby bral jako kořenovu složku Admin. Zkoušel jsem všude změnit cesty do Adminu i parsování url jsem měl správně. Ale přesto mě tam pořád něco nešlo. Předem díky moc za jakoukoliv pomoc.
Taps
Profil
BitaSk:
nezkoušel jsi použít namespace?
BitaSk
Profil
ne namespace jsem nepoužil. Pokusím se najít nebo vytvořit i s Backendem ... pak sem POSTNU řešení


nebo to asi nechám jak je... v htaccess vyloučím z url cestu /admin a tam si udělám svoji strukturu. Samozřejmě by bylo lepší mít ve složce stejnou strukturu jako ve frontendu. Budu se ještě pokoušet. To že nat nemůžu přijít znamená, že tu strukturu asi na 100% nechápu.
BitaSk
Profil
chtěl jsem se prosím vás zeptat. Je něco špatného natom, mít backend na subdoméně ?


Tak jsem to nakonec udělal jako subdoménu. Web je například http://www.mvc.cz a backend je http://admin.mvc.cz může mi někdo říct v čem toto řešení může být problematické ?
Jan Tvrdík
Profil
BitaSk:
Prakticky v ničem.

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