我有一个名为home_view的视图,其中有几个列表,例如libri(books)。用户可以上传和删除文件。
这是home_view.php的片段
<?php
echo "<table>";
echo "<tbody>";
echo "</br>";
foreach ($libri as $row):
?>
<tr>
<td>
<div>
</br>
<img src="<?php echo base_url('Immagini/book.png'); ?>" />
<a class="pdf" data-fancybox-type="iframe" rel="group" href="<?php echo base_url($row['Url_suffix']) ?>"><?php echo $row['Nome']; ?> </a>
<a class="deleteUser" href="javascript:void(0)" rel="<?php echo site_url('libro/elimina/'.$row['ID']) ?>"><img src="<?php echo base_url('Immagini/button_close.png'); ?>"/></a>
</div>
</td>
</tr>
<?php
endforeach;
?>
libri是一个Mysql数据库表,有不同的列,Url_suffix是一个Varchar(255)列,其中有folder/filename.pdf
。在第二个锚中我成功删除了来自DB的行,但不是文件。我试着做这样的事情
<a class="deleteUser" rel="<?php unlink($row['Url_suffix']); ?>"><img src="<?php echo base_url('Immagini/button_close.png'); ?>"/></a>
但没有成功。我错了什么?
更新
controller libro.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Libro extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->helper("file");
}
public function elimina($libri_id) {
//$libri_ID = $this->libri->get_one($libri_id);
$result=$this->libri->did_delete_row($libri_id);
redirect(site_url('admin/dashboard'), 'refresh');
}
}
?>
答案 0 :(得分:2)
您无法使用&#34;取消关联&#34;这样,基本上你需要在模型的帮助下处理你想要在控制器上删除的内容,例如:
public function delete_file($route, $file){
unlink($route . "/" . $file);
}
在模型中,您可以在任何地方使用它,$ route参数将是存储文件的目录的路径,例如:
htdocs/website/static/books/user/
$ file参数将是您要删除的扩展名,例如:
myfirstbook.pdf
然后你将拥有该文件的完整路径并将被删除,你只需要从控制器中由该锚点给出链接的模型中调用该函数,例如
<a href="http://localhost/website/delete-file/$user/$name">Delete file</a>
你的控制器会有类似
的东西public function delete_file($user, $file){
$this->load->model('YourModel', 'yourmodel');
$path = FCPATH . "static/books/user/".$user;
$this->yourmodel->delete_file($path, $file);
}
完成了。 希望它有所帮助。