CakePHP 3 - 无论主机和项目名称

时间:2017-03-25 14:09:19

标签: cakephp download cakephp-3.0

在任何特定的视图中,如果我包含此链接:

<?php echo $this->Html->link('Download', ['controller' => 'Uploads', 'action' => 'download',$upload->id]) ?>

用户可以根据提供的$upload->id下载文件。

我在上传器控制器中使用它作为我的下载功能:

$upload = $this->Uploads->find('all')->first();
$filePath = '\xampp\htdocs\project\webroot\uploads'; //file path to where the uploaded file is
$this->response->file($filePath . DS . $upload->name,
    array('download' => true, 'name' => $upload->name)); //finds the corresponding name attribute in the Uploads table of the database, finds a matching name in the uploads directory and then downloads that file.

$this->set(compact('upload'));

但是,我想知道是否有办法让文件路径更灵活。在我的config.php中,我设置了两个名为$host$basepath的变量来分别引用Web主机(localhost)和项目名称(项目)。我将这些变量传递给AppController,任何View都可以访问它们。

但我似乎无法在下载功能的$filePath变量中使用这些变量,所以如果我或其他任何人要更改主机或项目名称,而不是简单地更改config.php,我或其他任何人都必须去找到并更改它(如果我在多个控制器中有多个下载功能,他们必须去改变它们中的每一个)。

1 个答案:

答案 0 :(得分:2)

看一下CakePHP全局常量。您可以使用WWW_ROOT轻松访问您的webroot路径。

https://book.cakephp.org/3.0/en/core-libraries/global-constants-and-functions.html