通过 ajax 调用 phalcon php MVC 控制器

Posted

技术标签:

【中文标题】通过 ajax 调用 phalcon php MVC 控制器【英文标题】:calling a phalcon php MVC controller via ajax 【发布时间】:2015-05-17 06:16:23 【问题描述】:

我正在使用带有 phalcon php 和 AngularJs 的简单应用程序。我正在尝试通过 AJAX POST 请求从 angularJS 控制器调用我的 phalcon PHP 控制器。

 $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>

我做错了什么?

【问题讨论】:

【参考方案1】:

好的,正如我所想,我的问题在于重写机制。 首先,在 httpd.conf 文件中我必须:

    在相关目录中将“AllowOverride None”更改为“AllowOverride All”。 我的“mod_rewrite”被禁用,所以我不得不取消注释该行:“# LoadModule rewrite_module modules/mod_rewrite.so"

【讨论】:

【参考方案2】:

假设您使用的是 phalcon 的默认和工作部署,我建议您检查尾部斜杠,有一个手动的声音:http://docs.phalconphp.com/en/latest/reference/routing.htmlanchor #dealing-with-extra-trailing-slashes

您还可以使用自定义脚本测试您的路线:之前的相同网址,锚点 #testing-your-routes

...或者..你可以通过监听调度器的dispatch:beforeDispatchLoop,进入路由系统尝试找出故障所在,这里有一段代码@ 987654322@,您可以在事件函数中看到框架如何猜测控制器和动作名称:

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

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

...它们应该存在才能成功路由,顺便说一句,请参阅示例代码

【讨论】:

以上是关于通过 ajax 调用 phalcon php MVC 控制器的主要内容,如果未能解决你的问题,请参考以下文章

不能在 Phalcon php 中调用除 indexAction 以外的 indexController 的动作

mac 通过brew安装php70 +php-fpm+ phalcon3.0.3

phalcon安装-遇坑php-config is not installed 解决方法

phalcon: crypt-encrypt/decrypt用法

在输入字段下显示表单错误消息 Phalcon php

php安装phalcon扩展