2015-03-14 20 views
8

tôi đang sử dụng ứng dụng đơn giản với phalcon PHP và AngularJs. tôi đang cố gắng gọi điều khiển PHP phalcon của tôi từ bộ điều khiển angularJS thông qua yêu cầu AJAX POST.gọi một phalcon php MVC điều khiển thông qua ajax

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

và tôi nhận được

404 Các yêu cầu URL/ControllerName/không tìm thấy trên máy chủ này

tôi nghĩ rằng yêu cầu của tôi đang được chuyển đến thư mục công cộng của tôi trong khi điều khiển php của tôi nằm trong thư mục ngoài công cộng.

đây là những quy tắc .htaccess tôi có

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

và trong thư mục công cộng:

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

những gì tôi làm sai?

+0

@ nicola.p - nên tôi cấu hình một tuyến đường? tại sao tôi không thể sử dụng phalcon mặc định? –

Trả lời

4

Ok, sự cố của tôi ở trong cơ chế viết lại như tôi nghĩ. Đầu tiên, trong tệp httpd.conf tôi phải:

  1. Thay đổi "AllowOverride None" thành "AllowOverride All" trong thư mục có liên quan.
  2. "mod_rewrite" tôi là người khuyết tật, vì vậy tôi đã phải bỏ bình luận dòng: "# module LoadModule rewrite_module/mod_rewrite.so"
0

Trên giả định bạn đang sử dụng một mặc định và triển khai hoạt động của phalcon tôi đề nghị bạn để kiểm tra trailing dấu gạch chéo, có một giọng nói của nhãn hiệu về điều đó: http://docs.phalconphp.com/en/latest/reference/routing.html neo # buôn bán-với-phụ-trailing-slashes

bạn cũng có thể kiểm tra các tuyến đường của bạn với một kịch bản tùy chỉnh: cùng url trước, neo # kiểm tra-bạn-tuyến

... hoặc .. bạn có thể đặt mũi của bạn vào hệ thống định tuyến để cố gắng tìm nơi thất bại là bằng cách lắng nghe trên dispatcher cho công văn: beforeDispatchLoop, có một đoạn mã ở đây http://docs.phalconphp.com/en/latest/reference/dispatching.html#inject-model-instances, bạn có thể nhìn thấy trong chức năng sự kiện như thế nào khuôn khổ sẽ đoán bộ điều khiển và hành động tên:

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

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

... sau đó họ nên tồn tại cho một định tuyến thành công, btw tham khảo vào mã ví dụ

+0

cảm ơn, tôi sẽ kiểm tra và cập nhật .. –

Các vấn đề liên quan