вызов контроллера Phalcon php MVC через ajax

Я использую простое приложение с Phalcon PHP и AngularJs. я пытаюсь вызвать свой PHP-контроллер phalcon из контроллера angularJS через запрос AJAX POST.

 $http.post('/ControllerName/', {params});

и я

404 запрошенный URL / ControllerName / не найден на этом сервере

Я думаю, что мой запрос направляется в мою общую папку, тогда как мой PHP-контроллер находится в непубличной папке.

это .правила htaccess i есть

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule  ^$ public/    [L]
RewriteRule  (.*) public/ [L]</IfModule>

и в общей папке:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?_url=/ [QSA,L]</IfModule>

что я делаю не так?

2 ответов


хорошо, моя проблема была в механизме перезаписи, как я и думал. Во-первых, в httpd.conf файл я должен был:

  1. изменить "AllowOverride None" на "AllowOverride All" в соответствующем каталоге.
  2. мой "mod_rewrite" был отключен, поэтому мне пришлось отменить комментарий строки: "# LoadModule rewrite_module modules / mod_rewrite.так что"

в предположении, что вы используете стандартное и рабочее развертывание phalcon, я предлагаю вам проверить наличие конечных косых черт, об этом есть ручной голос:http://docs.phalconphp.com/en/latest/reference/routing.html якорь #dealing-with-extra-trailing-slashes

вы также можете проверить свои маршруты с помощью пользовательского скрипта: тот же url-адрес раньше, anchor #testing-your-routes

... или.. вы можете положить свой нос в маршрут система, чтобы попытаться найти, где сбой, прослушивая диспетчера для отправка:beforeDispatchLoop, здесь есть фрагмент кодаhttp://docs.phalconphp.com/en/latest/reference/dispatching.html#inject-model-instances, Вы можете увидеть в функции события, как фреймворк будет угадывать имена контроллера и действий:

//Possible controller class name
$controllerName = Text::camelize($dispatcher->getControllerName()) . 'Controller';

//Possible method name
$actionName = $dispatcher->getActionName() . 'Action';

... затем они должны существовать для успешной маршрутизации, кстати, обратитесь к примеру code