【问题标题】:calling a phalcon php MVC controller via ajax通过 ajax 调用 phalcon php MVC 控制器
【发布时间】: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>

我做错了什么?

【问题讨论】:

    标签: php ajax angularjs model-view-controller phalcon


    【解决方案1】:

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

    1. 在相关目录中将“AllowOverride None”更改为“AllowOverride All”。
    2. 我的“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';
      

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

      【讨论】:

        猜你喜欢
        • 2010-12-21
        • 1970-01-01
        • 2020-07-16
        • 2017-11-16
        • 1970-01-01
        • 2016-06-12
        • 1970-01-01
        • 2023-03-28
        • 1970-01-01
        相关资源
        最近更新 更多