2012-08-10 108 views
0

我有这个程序,我需要处理一个文本文件。 对于用户选择一个文件,我使用的这样的:cakephp将字符串传递给控制器​​

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

它提供了一个浏览器按钮并与所述路径选择的文件的输入。

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

我怎样才能在“prodfile”输入的字符串值添加到AA环节,因为这一个?:

<?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来完成这项任务,但如果有人可以建议采用其他方法,请执行此操作。

你能帮忙吗?

非常感谢!

回答

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.-这是原来的链接(其中的一些是dinamically创建

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,但没有用户选择文件(作为用户的第二个选项)

相关问题