a

Câu hỏi Tạo một đối tượng Yêu cầu Laravel khi đang bay


Tôi đang xử lý dữ liệu trong một bộ điều khiển và muốn truyền nó vào bộ điều khiển khác để tránh mã trùng lặp.

Có cách nào để thiết lập một đối tượng Yêu cầu cần thiết trong bộ điều khiển khác không store-phương pháp? Tôi đã truy tìm phần thừa kế Request và đến đối tượng Request của Symfony có một request tài sản thực tế là ParameterBag giữ một phương pháp add để thêm các tham số có giá trị vào nó.

Tôi đã thử những điều sau nhưng tôi nhận được null kết quả là:

$myRequest = new Request();
$myRequest->request->add(['foo' => 'bar']);
var_dump($myRequest->foo);

Tôi đang ở trên Laravel 5.1 cho dự án này.


9
2017-10-26 12:57


gốc




Các câu trả lời:


Bạn có thể dùng replace():

$request = new \Illuminate\Http\Request();

$request->replace(['foo' => 'bar']);

dd($request->foo);

Ngoài ra, nó sẽ có ý nghĩa hơn để tạo ra một Job cho bất kỳ điều gì đang diễn ra trong bộ điều khiển thứ hai của bạn và xóa ShouldQueue giao diện để làm cho nó chạy đồng bộ.

Hi vọng điêu nay co ich!


13
2017-10-29 19:29



Cảm ơn, do một giới hạn thời gian tôi đã giải quyết nó với một chút mã trùng lặp (những thứ khác đã xảy ra trong bộ điều khiển bên ngoài là tốt). Tôi sẽ nhớ điều này một lần nữa! - Ben
bạn có thể cho tôi biết cách chúng tôi có thể thay đổi phương thức yêu cầu thành POST ? - Rahul Sharma


Tạo một đối tượng yêu cầu với $myRequest = new Request(); tạo đối tượng bằng method = 'GET'. Bạn có thể kiểm tra phương thức của yêu cầu bằng $myRequest->getMethod(). Như request thuộc tính giữ dữ liệu cho các yêu cầu POST mà bạn không thể sử dụng $myRequest->request->add() theo mặc định. Trước tiên, bạn phải đặt phương thức của yêu cầu thành POST:

$myRequest = new \Illuminate\Http\Request();
$myRequest->setMethod('POST');
$myRequest->request->add(['foo' => 'bar']);
dd($request->foo);

Bằng cách sử dụng $myRequest->query->add() bạn có thể thêm dữ liệu vào yêu cầu GET.


11
2018-02-21 20:25