вызов контроллера 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 файл я должен был:
- изменить "AllowOverride None" на "AllowOverride All" в соответствующем каталоге.
- мой "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