2013-11-07 4 views
1

Я даю поддержку уже развернутому php-приложению, но способ, которым он работает, новичок для меня, и я не знаю, как он делает то, что он делает.Как настроить PHP-контроллер

В основном, метод PHP вызывается с помощью пути, как синтаксис для извлечения данных, например:

<?php 
// ..... 
$json = Request("http://_server/myfolder/abc/default/mymethod?data=something"); 
// Now $json var has some information. 
?> 

Странно то, как методы структурированы. До физического пути к папке «myfolder» существует сервер linux, вы знаете «.../apache/htdocs/myfolder /», но это IT. Кроме того, физическое расположение кода находится в другой структуре папок, где default/mymethod соответствует NO папкам вообще.

Разобравшись глубже, я обнаружил, что MyMethod соответствует методу PHP расположенного по адресу:

apache/htdocs/myfolder/protected/modules/abc/controllers/defaultcontroller.php 

А внутри defaultcontroller.php есть что-то вроде этого:

<?php 
// .... 
Class DefaultController { 
    // .... 
    Public Function actionmymethod { // Notice the name of mymethod has 'action' 
     // more code 
     return $response; 
    } 
} 
?> 

Im 100% убедитесь, что этот метод запущен при запуске вызова запроса, но я не знаю, как это делается.

Мой вопрос:

Как настроить это делается? Должно быть место, где вы связываетесь:

"http://_server/myfolder/abc/default/mymethod" with "actionmethod" 

но где и как?

Мне нужно сделать копию этого бега, так что я могу назвать свою копию с чем-то вроде этого:

"http://_server/FOLDERCOPY/myfolder/abc/default/mymethod" 

Я уже сделал копию новой структуры, но при вызове его, сервер не может найти новый метод/путь :(

EDIT *** Я нашел это в HTAccess находится в/MyFolder/

RewriteEngine on 
RewriteBase /myfolder/ 

# if a directory or a file exists, use it directly 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

# otherwise forward it to index.php 
RewriteRule . index.php 

Я изменил копию в/FOLDERCOPY/MyFolder, но это, кажется, не работает :(

RewriteEngine on 
RewriteBase /FOLDERCOPY/myfolder/ 

# if a directory or a file exists, use it directly 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

# otherwise forward it to index.php 
RewriteRule . index.php 

Благодаря

+0

https://en.wikipedia.org/wiki/Rewrite_engine – Reeno

+0

По существу, похоже, что это приложение многоуровневое. Части, которые выполняют запросы Запроса, используют клиентскую http-библиотеку, которая делает HTTP-запрос к URL-адресу. URL-адрес возвращает данные в формате json. Теперь для остальной части структуры вы должны посмотреть на index.php в корне doc сервера. Несомненно, он загружает фреймворк, и оттуда вы должны уметь отслеживать его компоненты. – gview

+0

С точки зрения ваших контроллеров, действие - это просто имя обработчика. Где-то будет конфигурация маршрутизации, которая связывает конкретный маршрут с этим именем действия. После того, как вы выясните, какие рамки они использовали, вы сможете найти для этого документацию. – gview

ответ

0

Не каждый URL в отображенные 1: 1 файловой системы сервера.

По-видимому, должен быть скрипт php внутри .../apache/htdocs/myfolder/, наиболее вероятно index.php. Также должны быть некоторые правила перезаписи, возможно, в файле .htaccess, которые переводят URL-адреса под http://_server/myfolder на этот скрипт, преобразовывая оставшуюся часть в параметры (либо query_string, либо path_info).

С этого момента php берет верх. Структура подразумевает наличие рамки MVC. Эта структура, по-видимому, поддерживает модули, один из которых - abc, код default контроллера mymethod вызван для обработки запроса.Таким образом, структура URL выглядит так:

http://server/site/module/controller/method?params 

Посмотрите на конфигурационный файл под .../apache/htdocs/myfolder/ (config.php?). Он будет содержать правила относительно местоположения модулей и сопоставлений (маршрутизации) для контроллеров. Кроме того, может быть глобальная конфигурация сайта, а также одна для каждого модуля ...

+0

есть перезапись, но, похоже, не может заставить ее работать :( – Paris

+0

@Paris Создайте файл 'test.php' внутри'/FOLDERCOPY/myfolder', содержащий ' geomagas

+0

у меня в .htaccess так же, как и выше, но с test.php RewriteBase/FOLDERCOPY/моя_папка/ RewriteRule. test.php Im call example.com/FOLDERCOPY/myfolder/whatever Сервер говорит, что запрошенный URL не найден – Paris

Смежные вопросы