2014-02-24 59 views
0

我是新手,并且会有一些帮助。在Codeigniter的Iframe中加载HMVC模块视图

我在CI-Boilerplate-Project中构建了一个边栏,其中包含我用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">&raquo; mehr</div> 
</div> 
</body> 
</html> 

现在,我需要更新friendslist每1-2分钟所以我tryed的iframe中加载moduleview:

<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

我认为主要的问题是你初始化索引方法的方式。索引方法在Codeigniter中的参数有点棘手。在我的项目中,获取传递给索引参数参数的唯一方法是使用URI库方法$ this-> uri-> segment(n)。换句话说,我认为$ visible的值并没有正确传递给index()主体

无论如何,我想你应该在MyFriends类中创建另一个名为render()的方法,例如调用它在index()方法上进行中继。现在render()可以很好地与$ visible = false初始化技巧一起玩。 希望这会有所帮助

+0

感谢您的回答。 我遇到的问题是如何在iframe的src属性中调用“echo Modules :: run()”。