2013-07-15 32 views
22

Tôi có một vài URL mà trông như sau:Trong TWIG, có thể nhận được url tuyệt đối của một liên kết với các biến twig trong đó không?

{{domainID}}/action/{{userId}}/anotherAction

Và điểm URL sau để:

http://localhost/viewA/{{domainID}}/action/{{userId}}/anotherAction

Tuy nhiên, nếu tôi cố gắng để tải viewA từ viewB qua iframe, liên kết bên trong viewA thay vì trỏ đến:

http://localhost/viewA/{{domainID}}/action/{{userId}}/anotherAction

nó sẽ trỏ đến:

http://localhost/viewB/{{domainID}}/action/{{userId}}/anotherAction

và người dùng sẽ kết thúc trong một trang 404 nếu nó đi theo sau.

Câu hỏi của tôi là:

Có cách nào để có đường dẫn tuyệt đối của url được tạo theo cách đó trong cành không?

EDIT

Định nghĩa đường là:

@Route("/domain/details/{domainId}", name="domain_detailed_view")

tôi đã cố gắng để có được những đường dẫn tuyệt đối theo cách này:

{{ url({{domainID}}/action/{{userId}}/anotherAction) }}

nhưng tôi nhận được lỗi này:

A hash key must be a quoted string, a number, a name, or an expression enclosed in parentheses

+0

Hiện mã của thế hệ trong mẫu –

+0

đó là hàng thứ hai trong câu hỏi của tôi: click to edit ILikeTacos

+0

Nói chung, tại sao bạn không sử dụng đường dẫn và chức năng url của cành cây? Đối với những url này, có các tuyến đường hiện có không? Bạn có thể đăng định nghĩa tuyến đường của nó không? –

Trả lời

47

Các chức năng url hoặc path lấy tên tuyến, chứ không phải đường dẫn. Bạn có thể cho nó một mảng kết hợp như một đối số thứ hai tùy chọn nếu tuyến đường yêu cầu tham số.

Ví dụ:

{{ url('domain_detailed_view', { 'domainId': domainId, 'userId': userId }) }} 

http://symfony.com/doc/master/reference/twig_reference.html

2

Bạn có hai cách để làm điều tương tự. Thông thường bạn có thể sử dụng url() hoặc đường dẫn bên trong hàm absolute_url như vậy absoulute_url (đường dẫn (...)). Hãy xem xét những điều sau:

// example 1: 
{{ url('domain_detailed_view', { 'domainId': domainId, 'userId': userId }) }} 
// example 2: 
{{ absolute_url(path('domain_detailed_view', { 'domainId': domainId, 'userId': userId })) }}"> 

// note - those two do the same thing 

Nói chung vì Symfony 2.7 bạn có thể sử dụng absolute_url() với xác nhận và đường dẫn tương đối (liên quan đến thư mục web/root). Đây là cách bạn có thể sử dụng chúng để thiết lập đường dẫn tuyệt đối đến hình ảnh trong bó và trong chính thư mục web:

[app/src/UserBundle/Resources/public/img/image.jpg]

<img src="{{ absolute_url(asset('bundle/user/img/image.jpg')) }}" /> // new way since 2.7 up 
<img src="{{ asset('bundle/user/img/image.jpg', absolute: true) }}" /> // old way below 2.7 removed in symfony 3.0 

[ web/css/img/một số.jpg]

<img src="{{ absolute_url('css/img/some.jpg') }}" /> 

Đây là những gì symfony đề xuất sử dụng khi hiển thị chế độ xem email. http://symfony.com/doc/current/email.html

6

Tôi biết đó là cũ và trả lời, nhưng với symfony 3 & cành bạn có thể làm:

{{ app.request.getSchemeAndHttpHost() }} 

/* will match even port :) i.e. 
* http://localhost:8000 
* http://localhost 
* http://example.com 
*/ 

mà là cực kỳ hữu ích: D

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