2015-02-09 17 views
19

Tôi đang cố gắng gọi phương thức Illuminate \ Http \ Request có từ một trong các bộ điều khiển của tôi.Laravel 5 Illuminate Http Yêu cầu có phương thức không cho phép gọi tĩnh

Request::has('fields') 

Sau từ các tài liệu chính xác, tuy nhiên tôi nhận được một lỗi ném:

phương pháp phi tĩnh Illuminate \ Http \ Yêu cầu :: có() không nên được gọi là tĩnh, giả sử $ này từ ngữ cảnh không tương thích

Tôi không chắc mình đang làm gì sai ở đây, tôi đã thử làm theo tài liệu càng chặt càng tốt.

+0

Như Laravel 5, đây là cách tiếp cận/giải thích chính xác http://stackoverflow.com/a/28574016/165084 –

Trả lời

46

Vấn đề là bạn đang sử dụng sai lớp Request. Bạn cần phải nhập Mặt tiền:

use Illuminate\Support\Facades\Request; 
+3

Cảm ơn bạn! Họ thực sự nên cập nhật tài liệu để giải thích điều này. _Sử dụng một vài phương pháp đơn giản, bạn có thể truy cập tất cả các thông tin người dùng từ cá thể Illuminate \ Http \ Request của bạn. Bạn không cần phải lo lắng về động từ HTTP được sử dụng cho yêu cầu, vì đầu vào được truy cập theo cùng cách cho tất cả các động từ._ – Life4Cali

+1

Bạn được chào đón. Vâng đó là sự thật. Tuy nhiên, bạn thậm chí không cần nhập bất kỳ lớp nào vì có một bí danh được đăng ký trong 'app.php'. Tuy nhiên IDE không thực sự có được điều đó. [Gói này] (https://github.com/barryvdh/laravel-ide-helper) giúp mặc dù – lukasgeiter

0

Hãy thử sử dụng Input :: has() thay vào đó sử dụng Input :: get() để thực sự lấy tương ứng POSTED/GET var.

3

Sử dụng Illuminate \ Support \ Facades \ Request; đang sử dụng Mặt tiền vốn không thực hành tốt. nên sử dụng Illuminate \ Http \ Request; và nhận yêu cầu có sẵn thông qua phương thức hoặc hàm tạo ie.-

public function __construct(Request $request) { 
    $this->request = $request; 
} 

và sau đó sử dụng phương pháp đó, ví dụ:

public function checkText() { 
    $txt = $this->request->has('txt'); 
    return $txt; 
} 
Các vấn đề liên quan