2015-03-14 5 views
8

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

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

и я получаю

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

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

эти правила .htaccess у меня есть

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

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

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

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

+0

@ nicola.p - я должен настроить маршрут? почему я не могу использовать факторию по умолчанию? –

ответ

4

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

  1. Изменить «AllowOverride None», чтобы «AllowOverride All» в соответствующем каталоге.
  2. Мой "mod_rewrite" был отключен, так что я должен был не-закомментировать строку: "# LoadModule rewrite_module модули/mod_rewrite.so"
0

В предположении, вы используете по умолчанию и рабочее развертывание Phalcon я предлагаю вам проверить отставая слеши, есть руководство голос о том, что: http://docs.phalconphp.com/en/latest/reference/routing.html якорь # дилинг-с дополнительными замыкающими слешами

вы также можете проверить свои маршруты с помощью специального сценария: тот же URL раньше, якорь # тЕСТИРОВАНИЯ ваших трасс

... или .. вы можете поместить свой нос в систему маршрутизации, чтобы попытаться найти, где ошибка при прослушивании на диспетчере для Отправка: 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'; 

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

+0

спасибо, я проверю это и обновит .. –

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