我刚刚开始编写PHP代码和HTML,我遇到了问题。我有一个创建HTML代码的函数:
function test(){
echo "<div style=\"font-size:13px;font-family:Arial\">";
echo "<a href='google.com'>sasa</a>";
echo "</div>";
}
当我拨打$ a = $ this-&gt; test()时,我不想渲染html,只是为了发送给smarty。我已经尝试过使用json编码,但它无法正常工作。请帮帮我。
答案 0 :(得分:2)
将echo
替换为单个return
,您可以将该功能的返回值发送给smarty或在其他地方使用。
function test(){
$content= "<div style=\"font-size:13px;font-family:Arial\">";
$content.= "<a href='google.com'>sasa</a>";
$content.= "</div>";
return $content;
}
$a = $this->test(); // $a has your unrendered html
您还可以对HTML字符串使用 Heredoc 语法
$content= <<<HTML
<div style="font-size:13px;font-family:Arial">
<a href='google.com'>sasa</a>
</div>
HTML;
答案 1 :(得分:1)
虽然我不喜欢现代时代的Smarty,但它似乎仍在使用。它背后的基本思想是它通过PHP的赋值来接收它的元数据。所以如果你想发送一些东西给smarty,请使用assign。不管它是不是HTML。只是不回应它,而是 - 返回它
function test(){
$html = "<div style=\"font-size:13px;font-family:Arial\">";
$html .= "<a href='google.com'>sasa</a>";
$html .= "</div>";
return $html;
}
$smarty->assign('myVar', test());
答案 2 :(得分:1)
如果你使用Smarty,你根本不应该这样做。使用Smarty并将HTML代码放入PHP有什么意义?没有。
您应该使用fetch()
代替
你可以这样做:
function test($smarty){
return $smarty->fetch('testtemplate.tpl');
}
$smarty->assign('mycode', test($smarty));
在testtemplate.tpl
中你可以简单地说:
<div style="font-size:13px;font-family:Arial">
<a href='google.com'>sasa</a>
</div>
在Smarty中你有两种方法:
display()
- 用于显示模板
fetch()
- 将模板提取到字符串中然后随意做任何事情
答案 3 :(得分:0)
您需要创建一个变量来包含HTML代码并让您的函数返回它。以下是一个例子:
function test() {
$ret = "<div style=\"font-size:13px;font-family:Arial\">";
$ret .= "<a href='google.com'>sasa</a>";
$ret .= "</div>";
return $ret;
}
$ret .= 'string'
会将给定字符串附加到您的变量而不是分配它。
答案 4 :(得分:0)
让它返回值而不是显示其输出;
function test(){
$out = "<div style=\"font-size:13px;font-family:Arial\">";
$out .= "<a href='google.com'>sasa</a>";
$out .= "</div>";
return $out;
}
答案 5 :(得分:0)
根据此修改您的功能 -
function test(){
return "<div style='font-size:13px;font-family:Aria;'>
<a href='google.com'>sasa</a></div>";
}
并使用 - $ a = $ this-&gt; test()