Создать динамическую страницу с php - PullRequest
0 голосов
/ 25 июня 2019

Я пишу небольшую систему маршрутизации для проекта. Это не идеальный вариант, и это нестандартное решение, которое отображает URL-адрес в своих шаблонах по запросу пользователя. Я хочу создать динамическую страницу на основе уникального идентификатора для каждого события, вставленного пользователем в базу данных. Поэтому, если пользователь запросит событие 1234, он получит страницу с подробным описанием события по URL-адресу https://mysitedomain.com/event/1234. Мне нужно понять, как добиться этого с моим кодом, я использую фронт-контроллер и красный бин в качестве ORM для доступа к базе данных. Вот код моего роутера. Любое предложение будет оценено. сейчас я могу обслуживать только шаблоны.

<?php
namespace Router;

define('TEMPLATE_PATH', dirname(__DIR__, 2).'/assets/templates/');

class Route {

  private static $assets = ['bootstrap' => 'assets/css/bootstrap.min.css',
    'jquery' => 'assets/js/jquery.min.js',
    'bootstrapjs' => 'assets/js/bootstrap.min.js',
  ];

    public static function init()
    {
      if( isset($_SERVER['REQUEST_URI']) ){
        $requested_uri = parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH);
          if( $requested_uri === '/' ){
            echo self::serveTemplate('index', self::$assets);
          }
          elseif( $requested_uri != '/' ){
            $requested_uri = explode('/', $_SERVER['REQUEST_URI']);
            if( $requested_uri[1] === 'event' ){
              echo self::serveTemplate('event', self::$assets, ['event_id' => 001] );
            }
            else{
              echo self::serveTemplate($view, self::$assets);
            }
          }
      }
    }

    private static function serveTemplate(string $template, array $data, array $event_id = null)
    {
      if( !is_null($event_id) ){
        $data[] = $event_id;
        ob_start();
        extract($data);
        require_once TEMPLATE_PATH."$template.php";
        return ob_get_clean();
      }
      else{
        ob_start();
        extract($data);
        require_once TEMPLATE_PATH."$template.php";
        return ob_get_clean();
      }
    }

}

?>

1 Ответ

0 голосов
/ 27 июня 2019

Написание роутера с нуля немного сложнее, вы должны много играть с регулярным выражением , чтобы приспособиться к различным сценариям запрошенного URL, и ваш роутер должен обрабатывать методы HTTP, такие как POST, GET, DELETE, PUT и патч.

Возможно, вы захотите использовать существующие библиотеки, такие как Fast Route , они просты в использовании, и их простота может дать вам представление о том, как они создаются.

...