我正在创建一个函数,它会在我的视图中插入一些简单的HTML。我已经多次没有遇到任何问题,但这次我将使用在Controller中设置的变量>提取到视图中。
现在,我显然不想离开我的单行快捷方式:<?php echo showStatusMessages(); ?>
通过检查是否设置了变量,然后将它们作为参数等发送,因为这只会杀死函数调用的点共
经过一些尝试和失败后,我最终得到了一个受保护的属性,我想在我的函数中使用它。知道如何找到解决办法吗?
// Outputs success/error messages
function showStatusMessages() {
$variables = array(
'success',
'error'
);
foreach ($variables as $variable) {
// Cannot access protected property CI_Loader::$_ci_cached_vars
if ($variable = $GLOBALS['CI']->load->_ci_cached_vars[$variable]) ${$variable} = $variable;
break;
}
ob_start();
// Success message set
if (isset($success)) :
echo '<div class="message_box success_color">'.$success.'</div>';
endif;
// Error message set
if (isset($error)) :
echo '<div class="message_box error_color">'.$error.'</div>';
endif;
$msg = ob_get_contents();
ob_end_clean();
return $msg;
}
答案 0 :(得分:1)
您是否有理由不使用视图?
<?php if (isset($success)) : ?>
<div class="message_box success_color"><?php echo $success; ?></div>
<?php endif; ?>
<?php if (isset($error)) : ?>
<div class="message_box error_color"><?php echo $error; ?></div>
<?php endif; ?>
然后使用单行调用此视图,如下所示(假设您将视图命名为“statusMessage”:
<?php $this->load->view('statusMessage'); ?>
这样做可以完成你正在努力的功能;你可以从一行中多次调用它。
答案 1 :(得分:0)
同意它不是首选方法,但是分配$GLOBAL
将正常工作,并且可以在层次结构中运行的函数下访问。尝试将其分配给$GLOBALS['ci']
时会遇到麻烦。
在你的帮手中:
function saveSomething($id){
$GLOBAL['savedVars'][] = $id;
}
在您的助手被召唤之后,在您看来:
var_dump($GLOBAL['savedVars']);