2012-05-07 15 views
9

Bir PHP dizisini TWIG kullanarak PHP değişkenlerinden gelen değerlerle doldurmak istiyorum. Daldaki kesme çizgileri nasıl değiştirilir

<script type="text/javascript"> 
    var cont=new Array(); 
    {% for key, post in posts %} 
    cont[{{ key }}] = "{{ post.content }}"; 
    {% endfor %} 
</script> 

sorun

bu çok komuta olarak tercüme ve bir hata var olduğu, yukarıdaki kodu birkaç satır ayrılmış JS komutları yapmak yüzden birkaç satır ile post değişken olmasıdır.

Bu yüzden tüm 'yeni satırları' değiştirmem gerektiğini düşünüyorum \ n.

cont[{{ key }}] = "{{ post.content | replace({"\n":"<br>"}) }}"; 

Ama yardımcı olmuyor:

Böyle yapmaya çalıştı. http://twig.sensiolabs.org/doc/filters/nl2br.html

+0

Bunu yapmanın tek doğru yolu şudur: '{{post.içerik | ({'\ r \ n': '\\ r \\ n', '\ n': '\\ n', '\ r': '\\ r'})}} ' – caw

cevap

7

Hala ... birkaç satır olarak kalmaya

{{ post.content | replace({"\n":""}) }} 

'\' özel işaretidir, o yüzden kaçmalısın. Bu çalışacaktır:

{{ post.content | replace({"\\n":""}) }} 
+2

değiştirin, ne yazık ki, bu 'nl2br' süzgecinin' nl2br() 'işlevini PHP'de' n 've' 'yerine geçmeyen' 'basit geri dönüşü olduğu için JavaScript’de '\ n' ve' \ r' terimlerinden oluşan bir soruyu sormak için bir çözüm değil. \ 'karakterleri hiç, ama onları'
\ n \ r 'ile değiştirir, böylece whitespaces hala kodda. – Athlan

4

sadece fren hatları kaldırmak isterseniz, bu çalışmıyorsa: nl2br filtresi vardır

4

kullanın {{ post.content | nl2br }}

20

(Javascript içine kullanıcı verilerini çıkışı) benzer bir sorun için, ben şu gerekliydi bulundu:

post.content|replace({"\n":' ', "\r":' '}) 

yani. \r'un yanı sıra \n alanlarını boşluklarla değiştirin. Bunun nedeni, kullanıcı tarafından girilen bazı içeriğin (özellikle Windows kullanıcıları için), \r (satır başı) ve satır sonları içermesi olabilir; bu durum hala kaldırılmamışsa Javascript'i bozar.

Benim için, nl2br uygun değildi, çünkü kullanıcı içeriğini bir Javascript yöntemiyle besliyordum (kullanıcı tarafından girilen adresleri bir Google Haritasına eklemeye değer olduğu için), böylece herhangi bir satır istemedim tatili, HTML veya başka türlü.

7

iyi yolu (ve iyi bir şekilde) Twig (eğer \r\n istemiyorsanız) kullanarak bazı javascript yazmak için bu yoludur:

{{ example|e('js') }} 

<br /> can, tabii ki, işi değiştirilmesi, ama olacak verilerinizden veri kullanarak javascript'te diğer sorunlarla karşılaşabilirsiniz. Javascript kaçışını kullanarak, geçerli javascript'i yapmasını beklediğiniz şekilde mükemmel bir şekilde yazar. kaçış filtresi hakkında daha fazla bilgi için

:

http://twig.sensiolabs.org/doc/filters/escape.html

+2

Bu cevap doğru olanı olarak işaretlenmelidir. –

0

Sen, bir {% boşluksuz%} {% endspaceless%} TAG kullanmak zorunda bu gibi

<script type="text/javascript"> 
    var cont=new Array(); 
    {% for key, post in posts %} 
    cont[{{ key }}] = "{% spaceless %}{{ post.content }}{% endspaceless %}"; 
    {% endfor %} 
</script> 
Enjoy; -)