2012-05-07 4 views
9

JavaScript 배열에 TWIG를 사용하여 PHP 변수의 값을 채우고 싶습니다. 나뭇 가지에 줄 바꿈을 바꾸는 방법

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

문제

은 여러 명령으로 변환하고, I는 에러가되며, 상기 코드는 몇 라인 분리 JS 명령을 그래서, 여러 라인 post 변수를 가지고있다.

그래서 모든 '새 줄'을 '\ n'으로 바꿔야한다고 생각합니다.

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

를하지만 도움이되지 않습니다

나는 이런 식으로하려고 노력. http://twig.sensiolabs.org/doc/filters/nl2br.html

+0

이렇게하는 유일한 방법은 다음과 같습니다.'{{post.내용 | 안타깝게도 이것은 ({ '\ r \ n': '\\ r \\ n', '\ n': '\\ n', '\ r': '\\ r'})}}' – caw

답변

7

아직 ... 몇 줄로 유지

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

를 '\'특별한 표시이다, 그래서 당신은 그것을 벗어날 필요가 있습니다. 이것은 작동합니다 :

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

twig의'nl2br' 필터는 PHP의'nl2br()'함수에 단순한 폴백 (fallback)을하기 때문에 자바 스크립트에서'\ n'과'\ r'을 이스케이프 처리하는 문맥에서의 질문을위한 해결책이 아닙니다. \ r' 문자는 모두 '
\ n \ r'으로 바꿉니다. 따라서 공백 문자는 여전히 코드에 있습니다. – Athlan

4

그냥 브레이크 라인을 제거 할 경우이 작동하지 않습니다 : nl2br 필터가

4

사용 {{ post.content | nl2br }}

20

을 (자바 스크립트로 사용자 데이터를 출력) 비슷한 문제를 위해, 나는 다음이 필요하다고 발견

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

즉. 공백이있는 \r\n을 바꿉니다. 이는 사용자가 입력 한 일부 콘텐츠 (특히 Windows 사용자의 경우)가 줄 바꿈뿐만 아니라 \r (캐리지 리턴)을 포함 할 수 있기 때문입니다. 줄 바꿈은 제거되지 않으면 Javascript를 깨뜨린 것처럼 보입니다.

사용자 콘텐츠를 Javascript 방식 (Google지도에 사용자가 입력 한 주소를 추가하기위한 것)에 넣기 때문에 nl2br이 적합하지 않아 어떤 라인도 원하지 않았습니다. 휴식, HTML 또는 기타.

7

가장 좋은 방법 (좋은 방법) 나뭇 가지를 (당신이 \r\n을 원하지 않는 경우)를 사용하여 일부 자바 스크립트를 작성하는이 방법입니다 :

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

<br /> 수 물론, 작품을 교체,하지만 당신은 것입니다 귀하의 데이터에서 데이터를 사용하여 자바 스크립트에서 다른 문제가 발생합니다. 자바 스크립트 이스케이프를 사용하여, 그것은 당신이 기대하는대로 올바른 자바 스크립트를 완벽하게 작성합니다. 탈출 필터에 대한 자세한 내용은

:

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

+2

이 답변은 올바른 것으로 표시되어야합니다. –

0

당신이하는 {%의 공간을 차지하지의 %} {%의 endspaceless의 %} 태그를 사용해야하는이 같은

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

관련 문제