不确定是否可以,但是你可以在模板中使用if语句吗?
因此,如果电话号码没有值,我根本不想显示该句子......
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset="utf-8"/>
<title>{form_title}</title>
</head>
<body>
<p>You received the following message from {name} through the Gossip Cakes' contact form.</p>
<p>Their email is {email}</p>
<p>Their phone number is {phone}</p>
<p>The message: {message}</p>
</body>
</html>
我想我可以使用直接的php,但是有一种方法可以返回视图的html吗?
答案 0 :(得分:2)
如果您具有创造性,CI模板确实支持IF语句。我经常使用它们。如果没有数据,您甚至可以使用它们来防止模板元素被解析。
考虑这三个示例数组:
$phone_numbers = array(
array('phone_number'=>'555-1212'),
array('phone_number'=>'555-1313')
)
$phone_numbers = array()
$phone_numbers = array( array('phone_number'=>'555-1414') )
并且考虑这是你的html中的相关部分:
{phone_numbers} <p>{phone_number}</p> {phone_numbers}
使用三个阵列,相应的输出阵列一和三如下。 (使用数组2将不会打印任何内容,因为控件数组为空。)
<p>555-1212</p><p>555-1313</p>
<p>555-1414</p>
答案 1 :(得分:1)
假设您正在使用CI's built in parser,则必须事先准备好所有变量。此时不支持条件,变量赋值或超出循环和基本令牌替换的任何内容。
要在CI中执行此操作,您必须在控制器中准备整个消息,如下所示:
if ($phone) {
$data['phone_msg'] = "<p>Their phone number is $phone</p>";
} else {
$data['phone_msg'] = '';
}
不是一个好的解决方案。我个人推荐Twig,如果你正在寻找一个很好的模板解析器。您对“我想我可以使用直接PHP”的想法也非常好。
是否有返回视图html的方法?
使用view()
的第三个参数,如下所示:
$html = $this->load->view('myview', $mydata, TRUE);
echo 'Here is the HTML:';
echo $html;
// OR...
echo $this->parser->parse_string($html, NULL, TRUE);
答案 2 :(得分:0)
类MY_Parser扩展了CI_Parser {
/**
* Parse a template
*
* Parses pseudo-variables contained in the specified template,
* replacing them with the data in the second param,
* and clean the variables that have not been set
*
* @access public
* @param string
* @param array
* @param bool
* @return string
*/
function _parse($template, $data, $return = FALSE)
{
if ($template == '')
{
return FALSE;
}
foreach ($data as $key => $val)
{
if (is_array($val))
{
$template = $this->_parse_pair($key, $val, $template);
}
else
{
$template = $this->_parse_single($key, (string)$val, $template);
}
}
#$template = preg_replace('/\{.*\}/','',$template);
$patron = '/\\'.$this->l_delim.'.*\\'.$this->r_delim.'/';
$template = preg_replace($patron,'',$template);
if ($return == FALSE)
{
$CI =& get_instance();
$CI->output->append_output($template);
}
return $template;
}
}
享受:D