Info o ciastkach

Eeee...
Żeby strona działała fajnie to trzeba zaakceptować obsługę pewnych plików. Jeśli jesteś nienormalny, nosisz czapkę z amelinium i siedzisz w schronie zbudowanym z poduszek to możesz je sobie wyłączyć. Autor strony nie czerpie żadnych korzyści z cookies (twierdzi nawet, że ten komunikat jest głupi), ale, cóż - Unia wymaga. Korzystając z witryny zgadzasz się z polityką cookies.

Wszystko w budowie...

Panel admina w MVC

Przyjdzie kiedyś taki czas, że do strony pisanej w MVC przyjdzie dorobić panel admina. Pół biedy jeśli strona korzysta tylko z bazy danych. Większa bieda robi się gdy na serwer trzeba zdalnie wrzucać obrazki.

Pierwsze co to zmienimy plik naszej aplikacji na Route.php a klasę na Route bo w zasadzie jest to nasz router.

Powiedzmy, że zawartość plików admina będzie w katalogu "admin". Będą tam kontrolery, modele, widoki, folder "public" na style, js itp i plik index.php z zawartością



<?php
require "../.config/.env.php";
header("location:".ROOT."admin/index");
?>

Plik ten jest po to aby automatycznie przekierować wywołanie strona/admin do kontrolera index w katalogu admin. Jakoś automatyczne przekierowanie nie chce mi działać. Pora teraz na drobne modyfikacje w pliku "Route.php". Jeśli $url[0] to admin to trzeba przekierować całą aplikację do tego katalogu i przepisać $url by pozbyć się $url[0]==="admin". Czyli w kodzie by to wyglądało np tak



if($url[0]==="admin"){
   $tmp_url=$url;
   unset($url);
   for($i=1;$i<count($tmp_url);$i++){
       $url[$i-1]=$tmp_url[$i];
   }
   $url[0]=empty($url[0])||$url[0]==="index.php"?"index":$url[0];
   
   $file="admin/controllers/".$url[0].".php";
   
   if(file_exists($file)){
       require $file;
       $controller=new $url[0];
       $controller->loadModel($url[0],"admin/");
       $controller->index($url[1]);
   }else{
       require 'admin/controllers/error_404.php';
       $controller=new Error_404();
       $controller->index();
   }
}else{
	//wywołanie standardowej strony
}

Należy też pozmieniać inne pliki. Jak widać zmieniło się wywołanie modelu. Metoda ta prezentuje się teraz następująco



public function loadModel($name,$prefix=null){
  $path=$prefix."models/".$name."_model.php";
  if(file_exists($path)){
      require $path;
      $modelName=$name."_Model";
      $this->model=new $modelName;
  }
}

Zmianie uległy również kontrolery. Funkcja render dla indexu wygląda tak



$this->view->render("index/index","admin/");

Jeszcze tylko metoda render() w pliku "libs/View.php"



function render($name,$prefix=null){
     require $prefix.'views/main.php';
 }

No i modyfikacja "views/main.php"



include "admin/views/".$name.".php";

Plus poprawa wszystkich linków. I na razie to tyle.

Komentarze (0)

Nikt jeszcze nie dodał komentarza. Możesz być pierwszy.

Napisz komentarz lub zgłoś błąd

Dodane w dniu 20 września 2017 przez Michał Misztal
Kopiowanie powyższych wypocin dozwolone pod warunkiem podania źródła, znaczy tandemu autor + link do strony