HTML :: Template에서 사용할 수있는 방법이 있습니까?
다시? ;) 아니요, 원하는 것을하기 위해 DOM을 읽고 조작해야합니다. HTML :: Template은 특정 태그/마커에서만 작동합니다. $template->output()
을 변수에 저장하십시오. Mojo::DOM과 같은 구문 분석기로 변수를 읽고 양식의 인스턴스를 찾고 콘텐츠를 추가하십시오.
#!/usr/bin/perl
use strict;
use warnings;
use Mojo::DOM;
# fake output of $template->output;
my $html = << 'HTML';
<html>
<head>
<title>test</title>
</head>
<body>
<form method="post">
<input type="text" id="name">
</form>
</body>
</html>
HTML
# you say you want to parse this from CGI
my $value ='foo';
# what you want to add
my $addme = "<input type='hidden' value='$value'>";
my $dom = Mojo::DOM->new();
$dom->parse($html)->at('form')->child_nodes->first->append($addme)->root;
print $dom;
인쇄 :
<html>
<head>
<title>test</title>
</head>
<body>
<form method="post">
<input type="hidden" value="foo"><input id="name" type="text">
</form>
</body>
</html>
편집이 예는 솔루션을 보여줍니다.
템플릿에서 수행중인 작업을 잘 모르기 때문에 기존 코드의 출력 결과를 기반으로하는 것이 가장 좋습니다. 앞서 말한 방법을 안전하게 추가 할 수 있다는 의미는 현재 템플릿의 출력물을 인쇄하고 있다는 것입니다. 하나의 업데이트로 제공된 코드를 사용하여 실제로 템플릿에 변경 사항을 다시 쓸 수 있으며 foo
이 아닌 값이 HTML :: Template 매개 변수가 될 수 있습니다.
모든 템플릿 파일을 수동으로 수정할 필요는 없습니다. Perl에는 변경 사항이 필요한 위치를 찾는 데 도움이되는 HTML 파서가 있습니다. ************************************************************************************************************** –
@ SinanÜnür 아래 예제를 통해 –
@ Dr.Avalanche 확인해보십시오. 일반적으로, 나는 그들을 사용하지 않으면, 뻔뻔스런 방법의 팬이 아니지만, 당신의 답변도 투표했다. –