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を使用して、トリガーリンクのparamsを介してサーバーに解析するための文字列(ファイルへのフルパス)を渡すことができました。

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 を使用してすべてを作り直しましたが、ユーザーがファイルを選択することはありません。(ユーザーの 2 番目のオプションとして)。

于 2012-08-21T20:20:57.883 に答える