我是新手,会得到一些帮助。
我正在CI-Boilerplate-Project中构建一个侧栏,其中包含我使用HMVC https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc运行的模块(小部件)。
在侧边栏中,我有一个小部件,可以显示在线/离线状态的好友列表。 用户可以在管理部分打开/关闭小部件。
在Profileview中:
<aside class="sidebox right">
<?php foreach ($boxes as $boxName => $boxSetting)
{
echo Modules::run($boxName, $boxSetting['box_visible']);
}
?>
</aside>
如果box_visible == 1,则会显示小部件。
控制器:
class Myfriends extends SM_Controller
{
function __construct()
{
parent::__construct();
}
public function index($visible = false)
{
$user = $this->session->userdata('user');
$myf = $this->widget_model->get_friends($user['user_id'], 5);
$data['friends'] = $myf;
if ($visible) $this->load->view('myfriends', $data);
}
}
查看:
<html>
<head>
<meta http-equiv="refresh" content="5">
</head>
<body>
<div class="box friendsbox">
<div id="header"><h3><?=$boxTitle?></h3></div>
<div id="boxcontent">
<ul>
<?php foreach ($friends as $friend): ?>
<li>
<div id="thb_img">
<img src="<?=img_thumb($friend['file_path'], 50, 50) ?>" />
</div>
<div id="short_desc">
<a href="<?= site_url('widget_functions/show_user/' . $friend['uu_id']) ?>">
<?= ucfirst($friend['user_name']) . ' ' . ucfirst($friend['user_lastname']) . ' ' ?>
</a>
<?php if ($friend['is_online']): ?>
<span style="color: green">online</span>
<?php endif; ?>
</div>
</li>
<?php endforeach; ?>
</ul>
</div>
<div id="footer">» mehr</div>
</div>
</body>
</html>
现在,我需要每1-2分钟更新一次好友列表,所以我尝试在iframe中加载模块视图:
<aside class="sidebox right">
<?php foreach ($boxes as $boxName => $boxSetting): ?>
<?php if ($boxName == 'myfriends' && $boxSetting['box_visible'] == 1) { ?>
<iframe src="<?php echo site_url('myfriends/index'); ?>" ></iframe>
<?php
}
else
{
echo Modules::run($boxName, $boxSetting['box_visible']);
}
?>
<?php endforeach; ?>
</aside>
但是这个剂量不起作用!小部件的位置是emtpy。
你知道如何让它发挥作用吗?
感谢您的帮助
答案 0 :(得分:0)
我认为主要问题在于初始化索引方法的方式。索引方法在Codeigniter中的参数有点棘手。在我的项目中,获取传递给索引参数的参数的唯一方法是使用URI库方法$ this-&gt; uri-&gt; segment(n)。换句话说,我认为$ visible的值没有正确传递给index()body
无论如何,我认为您应该在MyFriends类中创建另一个名为render()的方法,并调用它而不是在index()方法上进行中继。现在render()可以很好地使用$ visible = false初始化技巧。 希望这有帮助