簡體   English   中英

通過Ajax調用Phalcon php MVC控制器

[英]calling a phalcon php MVC controller via ajax

我正在使用帶有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>

我究竟做錯了什么?

好的,我的問題在於我認為的重寫機制。 首先,在httpd.conf文件中,我必須:

  1. 在相關目錄中將“ AllowOverride None”更改為“ AllowOverride All”。
  2. 我的“ mod_rewrite”被禁用,因此我不得不取消注釋該行:“#LoadModule rewrite_module modules / mod_rewrite.so”

假設您使用的是默認版本的phalcon且正在正常工作,我建議您檢查是否有斜杠,有關此的手動說明: http : //docs.phalconphp.com/en/latest/reference/routing.html錨點#extra-with-extra-trailing-slashes

您還可以使用自定義腳本測試路線:之前使用相同的網址,錨定#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';

...它們應該存在,以便成功進行路由,順便說一句示例代碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM