Tôi hiểu rằng việc sử dụng {% render() %}
sẽ tự động buộc một đối tượng yêu cầu mới được gửi đi, nhưng tôi tò mò nếu có cách chuyển yêu cầu gốc làm đối số?Symfony2: trong Twig, vượt qua Yêu cầu với chức năng Render
{% render('some_action', {'originalRequest': app.request}) %}
này dường như không phải làm bất cứ điều gì cho bộ điều khiển:
public function actionAction($originalRequest = null)
{
// $originalRequest ends up just being null
}
Im giả định của mình vì cách các tuyến đường được thiết lập:
some_action:
pattern: /stuff/
defaults: { _controller:SomeApp:Controller:action }
Tôi muốn tưởng tượng dữ liệu giống như không thể rõ ràng là ngoài URL, vì vậy một số loại cách để truyền dữ liệu đến URL có thể hiển thị, bất kỳ điều gì?
EDIT (Solution)
Giải pháp là khá đơn giản trong thời gian dài, như Petre Pătraşc dưới đây đã chứng minh, rằng trong cành, tất cả tôi cần làm là gọi Controller trực tiếp, và với cách tiếp cận đó Tôi có thể chuyển vào các đối tượng (như là một đối tượng Request) và các mảng, thay vì các giá trị văn bản trong một URL.
Để thực hiện gần như cùng một ý tưởng trong bộ điều khiển, sử dụng phương thức forward()
từ bộ định tuyến, sẽ cho phép các hiệu ứng tương tự mà không cần phải chuyển hướng người dùng đến trang khác.
Cuối cùng tôi đã xem qua câu trả lời của tôi chỉ khi bạn đăng bài này haha đây là vé mặc dù! Không sử dụng Router, chỉ cần gọi trực tiếp bộ điều khiển – RedactedProfile
Tôi tò mò, bạn có đang nói về việc sử dụng forward() hay không? Nó sẽ là tốt đẹp để cập nhật các câu hỏi ban đầu với giải pháp của bạn, vì nó có thể là một trường hợp cạnh và giúp đỡ một ai đó! –
Twig chỉ cần gửi một yêu cầu lỗi khi thử điều này – skerit