2017-10-09 1 views
-1

우리가 개발중인 응용 프로그램에서 HTML 컨텐트는 나중에 반환되는 perl 문자열로 작성됩니다. 조건의 결과에 따라 HTML의 특정 부분을 표시해야하는 경우가 있습니다. HTML은 마크 업이기 때문에 가능하지 않습니다. Perl 또는 다른 것을 사용하여이 문제를 해결할 수있는 방법이 있습니까? (두 개의 다른 템플릿을 만드는 것을 제외하고)조건에 따라 HTML 컨텐트 표시

고마워요!

+0

당신은 [이 이야기를보고]로 할 수 있습니다 (https://www.youtube.com/watch?v= : 당신이 템플릿 Tooikit를 사용하는 경우

, 그것은 다음과 같이 보일 수 있습니다 jKOqtRMT85s). – simbabque

답변

2

if 문을 기반으로하는 문자열에 다른 것을 넣을 수 있습니다.

my $thing_to_insert = ""; 
if (condition()) { 
    $thing_to_insert = '<div>...</div>'; 
} else { 
    $thing_to_insert = '<p>...</p>'; 
} 
my $html = "<div>$thing_to_insert</div>"; 
return $html; 

Template Toolkit 또는 Text :: Xslate와 같은 템플릿 언어를 사용하면 일반적으로 더 나은 방법입니다.

+1

이것은 내 눈을 아프게합니다. : D – simbabque

+0

나는 큰 HTML을 문자열로 가지고 있으며 결정에 따라 하나의 버튼을 보여 주어야한다고 말한다. 나머지는 동일해야합니다. 어떻게하면 HTML 사이에 펄 문자열을 추가 할 수 있습니까? 다음과 같이 표시됩니다. . . . ..... . . – raita

+0

@ 라이어 - 답변에서 예를 들었습니다. – Quentin

1

HTML 문자열을 구성 할 때 무엇을 보여줄지 결정해야합니다. 기본 용어에

, 당신의 코드는 다음과 같을 것이다 : 당신의 펄 코드의 내부 문자열을 연결하여 HTML을 생성하는 끔찍한 생각이다

my $html = '<html><head>... [lots of HTML]'; 

if ($we_want_to_show_the_button) { 
    $html .= '<button> ... [button html] ... </button>'; 
} 

$html .= '[lots more HTML] ... </body></html>'; 

나는 우리가 이십년에 대해 알고 있었다, 그러나,주의해야 . 훨씬 더 나은 접근법은 다양한 조건이 모두 해당되면 다양한 비트를 표시하는 것과 관련하여 일부 HTML을 템플릿에 넣는 것입니다.

<html> 
    <head>...</head> 
    <body> 
    ... lots of HTML omitted ... 
[% IF we_want_to_show_the_button -%] 
    <button> ... </button> 
[% END -%] 
    ... lots more HTML ... 
    </body> 
</html>