2010-06-22 28 views
9

Câu chuyện dài ngắn: Tôi đang tạo ứng dụng khung cho Zend Framework và tôi đã thực hiện phần mình cần thiết lập mô-đun api. Tôi đang sử dụng Zend_Rest_Controller cho công việc này. Tất cả là ok đến phần này, nơi tôi cần để có được các tiêu đề HTTP trong một bộ điều khiển để xác minh các phím api.Đọc tiêu đề HTTP trong Bộ điều khiển (Khung công tác Zend)

Trên các hướng dẫn khác nhau mà tôi đã đọc trên web, điều này được thực hiện thông qua plugin bộ điều khiển phía trước, nhưng tôi cần nó "cắm và chạy" hơn (kiểm tra mỗi lần cấu hình ứng dụng, quyết định module là api và vv).

Tôi đã thử những gì dường như rõ ràng nhất $this->getRequest()->getHeaders() nhưng dường như không hoạt động, ít nhất là không cho các tiêu đề HTTP, nơi tôi sẽ được seding khóa api của tôi. Không phải đối tượng reponse.

Có ai có thể giúp tôi với điều này không?

Trả lời

18

Tôi tìm thấy một cách để làm điều này sau khi tất cả :)

Trên phương pháp preDispatch() trong bộ điều khiển của bạn, bạn có thể làm như sau:

public function preDispatch() 
{ 
    $request = new Zend_Controller_Request_Http(); 
    $key = $request->getHeader('x-apikey'); 
} 

Dường như Zend_Controller_Request_Http đối tượng mang đến cho bạn acces để các tiêu đề . Thông tin thêm về số Zend_Controller_Request_Http bạn có thể tìm thấy here

8

Như Bogdan đã nói, bạn có thể tìm thấy thông tin đó trong lớp Zend_Controller_Request_HTTP. Nó có thể được tìm thấy trong bộ điều khiển bản thân bằng cách thực hiện:

$this -> getFrontController() -> getRequest() -> getHeader('Content-Type'); 

Thật không may, bạn không thể truy cập vào tất cả các tiêu cùng một lúc nhưng những gì ZF làm là chỉ cần sử dụng apache_request_headers() chức năng nếu có sẵn trên máy chủ để có được chúng.

+0

Khi tôi chạy điều này từ một lớp con của 'Mage_Customer_AccountController' kết quả là một lỗi nghiêm trọng:' Gọi để undefined phương pháp Namespace_Module_AccountController :: getFrontController() '. Tôi đang sử dụng Magento v 1.9.1.0. – quickshiftin

+0

@quickshiftin - tất nhiên - bởi vì đây là những phương pháp của Zend Framwork và Magento không có chúng. – PVGrad

+0

@PVGrad Tốt để biết, cảm ơn bạn đã làm rõ. – quickshiftin

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