0

我有这个过程,我需要处理一个文本文件。为了让用户选择一个文件,我使用这个:

<?php echo $this->Form->file('prodfile'); ?>

它提供了一个浏览器按钮和一个带有所选文件路径的输入。

用户浏览文件后,单击我的链接以触发该方法。

如何将“prodfile”输入上的字符串值添加到链接作为这个链接?:

<?php echo $this->Html->link(__('Process File'), array('controller' => 'qcas', 'action' => 'loadProdFromFile', 'dataFile' => $this->data['Project']['prodfile'], 'dirId' => $dirs['id']),  null, __('Please confirm you want to Load Production from File for Dir %s?', $dirs['dir_dataname'])); ?>

尝试了前者,但由于我没有提交表单,'prodfile' 上的值不会到达控制器。

如何将此文件输入上的字符串值传递给控制器​​?(只需要字符串解析并在控制器上构建正确的路径)。

更新:我目前正在使用 Ajax 来实现这一点,但如果有人可以提出不同的方法,请这样做。

你能帮我吗?

非常感谢 !

4

1 回答 1

0

如果没有 ajax,使用 javascript 我已经设法通过触发链接上的参数将字符串(文件的完整路径)传递给服务器以进行解析。

1.- 用户拿起一个文件

<?php echo $this->Form->file('prodfile', array('onchange' => "getFile();")); ?>
(getFile() only saves current href on my links - step 3-)

2.- 用户手动将完整路径复制到文本输入中。(不优雅但解决了我的问题)。

echo $this->Form->input('Project.fullPathInput', array('label' => 'Copied Path', 'id' => 'fullPath', 'onchange' => "assignPath();"));
(assignPath() updates href on all my original links with the fullpath -since I don't know which one the user will click-

3.- 这是原始链接(其中几个是动态创建的

echo $this->Html->link(__('LFF'), array('controller' => 'qcas', 'action' => 'loadProdFromFile', 'dirId' => $dirs['id']), array('name' => 'lff', 'id' => 'lff' . $i));

    function getFile() {
        document.getElementById('fullPath').value = '';
        var sHref = document.getElementsByName('lff');
        var len = sHref.length;
        // only the first time, save original hRef
        if ( preValues.length == 0) {   
            for (var i=0; i<len; ++i) {
                preValues[i] = sHref[i].href;
            }
        } else {
            for (var i=0; i<len; ++i) {
                sHref[i].href = preValues[i];
            }
        }
    }        

    function assignPath() {
        var finalPath = document.getElementById('fullPath').value;
        var sHref = document.getElementsByName('lff');
        var len = sHref.length;
        for (var i=0; i<len; ++i) {
            sHref[i].href = sHref[i].href + '/filePath:'+finalPath;
        }        
    }     

只是想分享以防有人面临类似的情况。

实际上,我已经使用 jQuery ajax 重新制作了整个东西,但没有用户选择文件。(作为用户的第二个选项)。

于 2012-08-21T20:20:57.883 回答