Как реализовать концепцию пути «соответствия» из Rails в PHP? - PullRequest
0 голосов
/ 21 августа 2011

В частности, в файле config / rout.rb приложения есть следующее:

match "/:id" => "UrlDB#userreq"

А в UrlDBController есть:

def userreq
    @request = UrlDB.find_by_url( (params[:id] )
end

Я бы хотел, чтобы один и тот же метод userreq отвечал на все входящие запросы в отношении значения: id - я не знаю, как реализовать это в PHP / Apache.

-daniel

Ответы [ 2 ]

0 голосов
/ 21 августа 2011

Во-первых, Rails - это среда Ruby, а PHP - это язык.Чтобы получить ту же функциональность в PHP, вы должны использовать фреймворк, как вы это делаете с Ruby.

Или вы можете сделать это вручную:

Старый способ сделать это без использования фреймворка, с помощью правил переписывания Apache:

RewriteEngine On
RewriteRule /(\d+) userreq.php?id=$1

Другой способ - сделать это вручную в PHP, но с помощью Apache.

В конфигурации Apache / .htaccess:

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule . - [L]

И в index.php:

$path = $_SERVER['REQUEST_URI'];

if (preg_match('#/(\d+)#', $path, $match)) {
    // execute userreq controller
} else if (preg_match(...)) {
...
0 голосов
/ 21 августа 2011

PHP дает вам свободу об этом. Вы не обязаны использовать «некоторую концепцию маршрутизации» (как в Rails), вы можете использовать «любую концепцию маршрутизации». Вы даже не обязаны использовать «контроллер» или модель MVC.

Просто получите входящие параметры (используя $ _REQUEST) и сами решите «маршрутизацию».

Или - используйте любой существующий фреймворк - большинство из них определяют некоторый шаблон / механизм маршрутизации.

...