使用ID在codeigniter中动态加载视图

时间:2013-03-24 19:13:10

标签: php codeigniter

我正在开发一个项目,用户可以上传用于前端Web开发的文件,并展示他在浏览器中完成的工作。 为了做到这一点,我要求用户使用名为test.html的html文件上传项目。 我正在使用codeigniter。

我已经完成了上传过程并在表格中写入了信息,但是当文件完成上传时我仍然不知道如何提供链接...即。我有一个上传控制器如下:

<?php class Main extends CI_Controller { 
  //{construct and all the parts} 
//upload function
function site_pages(){
 $this->load->view('header'); $this->load->view('nav'); $this->load->view('test.html');
      }
function do_upload(){
  .....code for file upload....
...update the database with the folder_id...
 }

然而,在完成此操作后,我需要提供用户的链接,即表格

   <a href="<?php echo base_url();?>/main/site_pages/folder_id/test.html" >

我坚持如何在此表单中生成此ID以及如何在控制器的特定视图中加载test.html文件

1 个答案:

答案 0 :(得分:1)

您可以为此目的构建控制器,并使用该控制器读取上传的html文件。读取文件后,可以从控制器

中输出

您可以将文件名映射到ID,并使用此ID标识每个文件。您可以将html文件从form.html重命名为2335332.html,然后使用此id作为参数从目录中读取文件。

以下是阅读文件的方法。

// segment 3 will have parameter passed: 2335332
$file_name=$this->uri->segment(3)."html";

// you should check in this point weather this file exists.

$this->load->helper(‘file’);

//read a file
$data = read_file('./path_to/to/'.$file_name.'.html');
// do javascript/php/other cleanup on $data

此时你有html代码,你可以输出

$this->output->set_output($data); 

但是我应该警告你,你应该清理上传的html文件以寻找可能的javascript / php代码,因为用户可以利用你的系统。

祝你好运。

修改

我认为您可以解决这个问题但只是为了让您知道,您为用户提供了如下链接

<a href="<?php echo base_url();?>user/site_pages/2335332">Link to your page</a>

假设您的代码位于控制器的site_pages()函数内:user。