通过 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 解决方法