Cześć.
Mam problem z front controllerem, dopiero zaczynam z wzorcami, więc proszę o wyrozumiałość.
Folder web jest skonfigurowany jak document root serwera, a w nim posiadam takie coś:

projekt/web/front_controller.php
  1. <?php
  2. require_once '../dispatcher.php';
  3. require_once '../routing.php';
  4. require_once '../controllers.php';
  5.  
  6. //aspekty globalne
  7.  
  8. //wybór kontrolera do wywołania:
  9. $action_url = $_GET['action'];
  10.  
  11. dispatch($routing, $action_url);


jest tam równiez pliczek .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ front_controller.php?action=/$1 [QSA]
</IfModule>


ogólnie struktura projektu wygląda tak:

projekt/
-buisness.php - tutaj mam logikę biznesową
-dispatcher.php
-controllers.php
-routing.php
views/
-galeria_view.php
web/
/static (tu trzymam pliki css i różne zasoby)
-fornt_controller.php
-.htaccess

teraz po kolei:

dispatcher.php
  1. <?php
  2.  
  3. const REDIRECT_PREFIX = 'redirect:';
  4.  
  5. function dispatch($routing, $action_url)
  6. {
  7. $controller_name = $routing[$action_url];
  8.  
  9. $model = [];
  10. $view_name = $controller_name($model);
  11.  
  12. build_response($view_name, $model);
  13. }
  14.  
  15. function build_response($view, $model)
  16. {
  17. if (strpos($view, REDIRECT_PREFIX) === 0) {
  18. $url = substr($view, strlen(REDIRECT_PREFIX));
  19. header("Location: " . $url);
  20.  
  21. } else {
  22. render($view, $model);
  23. }
  24. }
  25.  
  26. function render($view_name, $model)
  27. {
  28. global $routing;
  29. extract($model);
  30. include 'views/' . $view_name . '.php';
  31. }


controllers.php
  1. <?php
  2. require_once 'business.php';
  3.  
  4. function galeria(&$model)
  5. {
  6. $products = get_products();
  7. $model['products'] = $products;
  8.  
  9. return 'galeria_view';
  10. }


routing.php
  1. <?php
  2.  
  3. $routing = [
  4. '/' => 'galeria',
  5. '/upload' => 'upload',
  6. '/login' => 'login',
  7. '/logout' => 'logout',
  8. '/sign_in' => 'sign_in',
  9. ];


A w folderze views galeria_view.php
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>Galeria</title>
  5. <link rel="stylesheet" href="static/css/styles.css"/>
  6. </head>
  7. <body>
  8.  
  9. <div id="naglowek">
  10. <p class="bold">jakis tekst</p>
  11. </div>
  12.  
  13.  
  14. </body>
  15. </html>


Problem tkwi w tym, że nie wyświetla się galeria_view przy starcie i nie wiem w czym tkwi błąd, proszę o pomoc, tutaj załączam obrazek jak to wygląda:

jak widać mam apache 2.4.10