【问题标题】:CakePHP how to combine process stepsCakePHP如何组合流程步骤
【发布时间】:2013-05-29 10:38:28
【问题描述】:

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

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

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

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

体重

【问题讨论】:

    标签: cakephp button


    【解决方案1】:

    你的想法是对的。链接到控制器操作,该操作将写入数据库和日志,并将加载文件并将其呈现给用户。

    例子:

    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();
        }
    }
    

    【讨论】:

    • 嗨,谢谢史蒂文。我正在使用 cakephp 2.2 - 以上都支持吗?
    • 是的,应该是,虽然它不是一个完整的sn-p代码......你必须修改它以满足你的确切需求(例如Model->save()位)。
    • 嗨 - 很抱歉很厚。你建议我链接到控制器动作 - 所以我正在尝试使用 html->link - 但是,我需要将一组参数传递给控制器​​动作,因为控制器与链接视图使用的控制器不同。我似乎无法让它工作。有什么想法,还是我应该提出另一个问题?
    • 试试<a href="/controller_name/action_name/">Download File</a>
    • 嗨,史蒂夫,我遇到了模型/控制器之间的函数调用问题。我想我最好提出一个新问题。一旦我得到另一部分的工作,我会回到这里勾选你的答案。写入表日志运行良好!只是要测试的下载位(一旦我对这个功能进行了排序!)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多