CakePHP如何结合流程步骤

时间:2013-05-29 10:38:28

标签: cakephp button

我正在开发一个允许用户下载文件的系统,但如果他们下载了一个文件,我想在特殊目的表(MySQL)中记录此操作。

我已经可以生成一个带有相应文件链接的图标,但是我看不出如何在图标上点击下载文件的记录也可以创建日志记录。

我猜我将不得不使用一个按钮,并设置按钮的动作来运行......什么?控制器动作,辅助函数,其他......

这是我无法真正理解的最后一点。我很感激任何可能已经实现过类似建议的人的建议!

BW

1 个答案:

答案 0 :(得分:3)

你有正确的想法。链接到控制器操作,该操作将写入数据库&记录,并将加载文件并将其呈现给用户。

示例:

class MyController extends AppController {

    // Load the model
    public $uses = ('DbTable');

    public function get_file() {
        // Save the DB record
        $this->DbTable->save(...);

        // Set the output header for content delivery 
        // (use the appropriate mime-type for your file)
        header('Content-Type: image/jpg');

        // Have it download as if it were an attachment
        header('Content-Disposition: attachment; filename="filename.jpg"');

        // Print out the file contents
        echo file_get_contents('/path/to/filename.jpg');

        // Prevent any further processing or rendering
        exit();
    }
}