2011-12-12 67 views
0

我想将一个新模块实现到使用CI创建的站点中。我是CI的绝对新手,我无法弄清楚如何创建控制器和视图文件。我需要将新内容加载到当前网站的iframe中。到目前为止,我有:用于将页面加载到iframe中的CI控制器

控制器:

class Module extends Controller { 

    function __construct() { 
      parent::Controller(); 

    } 

    function index() { 
      $this->common->loadView('module/module'); 
    } 
} 

观点:

<iframe src="/new_module/index.php" width="100%" height="100%" scrolling="NO" frameborder="0" >An iframe capable browser is required to view this web site.</iframe> 

路线:

$route['module/(:any)'] = "module/$1"; 

网站结构:

resources/ 
system/ 
.... 
new_module/ 
new_module/index.php 
new_module/page1.php 
new_module/page2.php 

链接应该是:

http://mydomain.com/module/page1 
http://mydomain.com/module/page2 

链接在外面的iframe,内容应在iframe中加载。所以,iframe src应该动态改变。

很明显,它不起作用。可以有更多CI经验的人告诉我应该怎么做?

谢谢!

+0

您的iframe源代码将是您最初展示的内容,新内容将由您的链接决定。你需要用你的链接''的TARGET属性来指定你的iframe'name =“myframe”'。 – danneth

回答

0

对于帧动态改变,只是在链接的目标设定的iframe:

<a href="/pages/page/1" target="targetFrame">Page 1</a> 
<iframe id="targetFrame" src="" width="100%" height="100%" scrolling="NO" frameborder="0" ></iframe> 

据我了解,在默认情况下,笨并没有“模块”。这是除非你使用的CMS或一些建立在CI的顶部,在这种情况下,你需要指定。

否则,只需正确使用控制器即可获取所需内容。

class Pages extends Controller{ 

    public function page($id='') 
    { 
     switch $id{ 
      case 1: 
       $data['pageData']='foo'; 
      break; 
      ... 
     } 
     $this->load->view('page_view',$data); 
    } 
} 
+0

谢谢,这是有效的。我不能在链接中使用目标方法,因为iframe在每个页面上都不存在。因此,如果点击以下链接:/ pages/page/1,它应该动态地将页面url传递给iframe src。 – casper

+0

那么你可以在href上将目标设置到通过javascript存在帧的页面上,或者你可以在你的视图文件中使用php逻辑来设置目标。例如'<?php if($ framePage){$ target ='frameID';}?>请回答问题是否回答,以便其他人可以找到它。或者用您自己的正确答案回复并标记为解决方案。谢谢。 – stormdrain