2012-08-10 3 views
0

텍스트 파일을 처리해야하는이 절차가 있습니다. 사용자가 파일을 선택하려면,이를 사용하고 있습니다 : 브라우저 버튼을 선택한 파일의 경로와 입력을 제공cakephp 컨트롤러에 문자열 전달

<?php echo $this->Form->file('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'])); ?> 

으로 AA 링크에 'prodfile'입력에 문자열 값을 추가 할 수 있지만, 어떻게

나는 형태로, 'prodfile에 값을 제출 아니에요 이후 '컨트롤러에 도달하지 않습니다.

이 파일 입력의 문자열 값을 컨트롤러로 전달하는 방법은 무엇입니까? (문자열을 구문 분석하고 컨트롤러에 올바른 경로를 작성하기 만하면됩니다.)

업데이트 : 현재 저는 Ajax를 사용하기 위해 발을 들여 놓았습니다. 그러나 누군가 다른 접근법을 제안 할 수 있다면 제발하십시오.

도와 주시겠습니까?

고맙습니다.

답변

0

javascript를 사용하지 않고 트리거링 링크의 params를 통해 서버로 구문 분석 할 문자열 (전체 경로)을 전달했습니다.

1 .- 사용자는 사본을 수동으로 파일을 텍스트 입력에 대한 전체 경로를

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

2 .- 사용자를 선택합니다. (ellegant 아니지만 내 문제를 해결).

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를 사용하지만 사용자가 파일을 선택하지 않아도됩니다. (사용자의 두 번째 옵션으로)

관련 문제