За последние 24 часа нас посетили 16452 программиста и 1551 робот. Сейчас ищут 2036 программистов ...

MVC и GET запросы

Тема в разделе "Сделайте за меня", создана пользователем Alexxosipov, 7 фев 2017.

  1. Alexxosipov

    Alexxosipov Новичок

    С нами с:
    29 янв 2017
    Сообщения:
    5
    Симпатии:
    0
    Добрый день!)
    Возникла у меня тут проблемка:
    Есть сайт, построен на MVC каркасе, в .htaccess прописано следующее:
    .htaccess
    Код (Text):
    1.  
    2. AddDefaultCharset utf-8
    3. Options +FollowSymLinks
    4. RewriteEngine on
    5. RewriteBase /
    6. ErrorDocument 404 /404.php
    7. RewriteCond %{REQUEST_FILENAME} !-d
    8. RewriteCond %{REQUEST_FILENAME} !-f
    9. RewriteRule ^(.*)$ index.php
    Проблема заключается в том, что мне нужны GET параметры для яндекс.метрики и google.analytics (UTM-метки), однако любой запрос с GET параметрами ведет на index.php
    Подразумеваю, что делать это надо в файле router.php, вот его содержимое:

    PHP:
    1. <?php
    2.  
    3. class Router
    4. {
    5.  
    6.     private $routes;
    7.  
    8.     public function __construct()
    9.     {
    10.         $routesPath = ROOT.'/config/routes.php';
    11.         $this->routes = include($routesPath);
    12.     }
    13.  
    14. // Return type
    15.  
    16.     private function getURI()
    17.     {
    18.         if (!empty($_SERVER['REQUEST_URI'])) {
    19.         return trim($_SERVER['REQUEST_URI'], '/');
    20.         }
    21.     }
    22.  
    23.     public function run()
    24.     {
    25.         $uri = $this->getURI();
    26.  
    27.         foreach ($this->routes as $uriPattern => $path) {
    28.  
    29.             if(preg_match("~$uriPattern~", $uri)) {
    30.  
    31.                 // Получаем внутренний путь из внешнего согласно правилу.
    32.                 $internalRoute = preg_replace("~$uriPattern~", $path, $uri);
    33.  
    34.                 $segments = explode('/', $internalRoute);
    35.  
    36.                 //Находим название Controller
    37.                 $controllerName = array_shift($segments).'Controller';
    38.                 $controllerName = ucfirst($controllerName);
    39.  
    40.                 //Находим название action
    41.                 $actionName = 'action'.ucfirst((array_shift($segments)));
    42.  
    43.                 //Передаем в переменную $parameters оставшиеся части адресной строки
    44.                 $parameters = $segments;
    45.  
    46.  
    47.  
    48.                 $controllerFile = ROOT . '/controllers/' .$controllerName. '.php';
    49.                 if (file_exists($controllerFile)) {
    50.                     include_once($controllerFile);
    51.                 }
    52.                 $controllerObject = new $controllerName;
    53.                 $result = call_user_func_array(array($controllerObject, $actionName), $parameters);
    54.                 if ($result != null) {
    55.                     break;
    56.                 } else {
    57.                     header("HTTP/1.0 404 Not Found");
    58.                     include_once (ROOT . '/views/site/404.php');
    59.                     break;
    60.                 }
    61.             }
    62.  
    63.         }
    64.     }
    65. }
    Буду очень благодарен Вашей помощи! А то ужас какой-то сайт сделал, а работать не сделал [​IMG]
     
    #1 Alexxosipov, 7 фев 2017
    Последнее редактирование модератором: 8 фев 2017
  2. abrdabr

    abrdabr Новичок

    С нами с:
    28 янв 2017
    Сообщения:
    774
    Симпатии:
    65
    ну вот деректива указывающая куда "вести" убрав её будет вести куда попало.
    router.php здесь видимо не причём. нужно изменить директиву чтобы заменялась только страница сохраняя гетзапрос
     
  3. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    @Alexxosipov, кажется ты это делал по статье с хабра.
    Получи эти get-параметры в контроллере страницы.
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    #4 igordata, 8 фев 2017
    Последнее редактирование: 8 фев 2017
    mahmuzar нравится это.
  5. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Только в квадратные скобки заключить)
     
    igordata нравится это.
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    спасибо, забыл.