Jump to content
Sign in to follow this  
denrr

$this->request->get['_route_'] чем отличается от $this->request->get['route'] ?

Recommended Posts

Здравствуйте! Я переписываю логику для формирования ЧПУ ссылок. Не могу разобраться в чужом коде, может кто знает, чем отличается

 $this->request->get['route']

от

$this->request->get['_route_']

 

Share this post


Link to post
Share on other sites
6 минут назад, denrr сказал:

чем отличается

просто разные индексы

Share this post


Link to post
Share on other sites

site.ru?route=test

site.ru?_route_=test

Share this post


Link to post
Share on other sites
57 минут назад, denrr сказал:

Я переписываю логику для формирования ЧПУ ссылок.

 

57 минут назад, denrr сказал:

Не могу разобраться в чужом коде,

Зачем взялись? Если не понимаете?

  • +1 1

Share this post


Link to post
Share on other sites
В 06.01.2019 в 20:39, chukcha сказал:

Зачем взялись? Если не понимаете? 

Может что бы научиться/разобраться? Или это противозаконно? Или что-то можно делать только с письменным разрешением от... кого?

Share this post


Link to post
Share on other sites
9 минут назад, destreser сказал:

Может что бы научиться/разобраться? Или это противозаконно? Или что-то можно делать только с письменным разрешением от... кого?

А что там разбираться то...

 

Посмотрите в htaccess, что происходит здесь?

 

RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

По моему ясно же, что весь "хвост" запроса уходит в обработчик php с ключом _route_.

Т.е. это внешний набор данных, который пришел "из мира" в котором содержится полная информация о запрашиваемых данных, который потом разбирается на части сео-классом:

 

            
 

        // Decode URL
        if (isset($this->request->get['_route_'])) {
            $parts = explode('/', $this->request->get['_route_']);

 

а "route"  - это системный указатель, который определяет какой контроллер системы должен обрабатывать ваш запрос.

 

// Router
if (isset($request->get['route'])) {
    $action = new Action($request->get['route']);
} else {
    $action = new Action('common/home');
}

 

В случае использования ЧПУ, у нас в строке запроса нет явно указанных параметров, какой контоллер должен обрабатывать ту или иную ссылку,  а есть только что-то вида

site.com/product_url.

Для того чтобы движок понял, чему этот product_url соответствует ему надо из _route_ разобрать данные, постучаться в базу получить соответствия, типа product_id = 234234, определить по типу сущности, что это товар, выставить соответствующий системный route = product/poduct и отработать при помощи нужного контроллера ваши данные.

 

Ничего военного и тайного в этом нет. Но все таки я поддержу чукчу, если данный механизм непонятен "как есть", а он достаточно логичен и интуитивен, лучше не лезть, потому что можно нахомутать.

 

 

 

 

  • +1 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.