2

私のシステムには一連のテストがあります。テストを一時停止することができます。テスト コントローラーのインデックス ページで、次のコードを使用してテストを表示します。

<table>
<tr><th>ID</th><th>Name</th><th>Updated</th><th>Actions</th></tr>
<?php foreach ($tests as $test): ?>
    <tr>    
    <td>
        <?php echo $test['Test']['id']; ?>
    </td>
    <td class="actions">
        <?php
            $status = ($test['Test']['is_paused'] == 1) ? 'Un-pause' : 'Pause';
            echo $this->Form->postLink($status, array('controller'=>'tests', 'action' => 'pause', $test['Test']['id'], 'admin' => 1), array('confirm'=>'Are you sure?') );
        ?>
        <?php 
            echo $this->Html->link('Edit', array('controller'=>'tests', 'action' => 'edit', 'admin'=>1, $test['Test']['id']));
        ?>
        <?php 
            echo $this->Form->postLink('Delete', array('controller'=>'tests', 'action' => 'delete',       $test['Test']['id'], 'admin'=>1), array('confirm'=>'Are you sure?') );
        ?>
    </td>
</tr>

<?php endforeach; ?>
</table>

postlinkこれにより、テストのリストが生成され、cakephp フォーム ヘルパーを使用して各テストにいくつかのアクション関数が提供されます。問題を引き起こしているのは一時停止ボタンです。クリックすると、次のエラーがスローされることがあります。

Uncaught TypeError: Object #<HTMLCollection> has no method 'submit' 

このエラーは、一時停止が初めてクリックされたときに発生することはほとんどありません。一時停止は切り替えることができるため、通常、一時停止を数回切り替えた後にこのエラーが表示されます。私は自分の JS にあまり詳しくありません。このための JS は自動的に構築されるため、これを修正する方法がわかりません。この問題が発生した場合、一時停止ボタンは何もしません。これのデバッグをどこから開始すればよいかさえわかりません。助けてくれた人に感謝します。

更新: これは、postlink によってブラウザーでレンダリングされている html コードです。

<form action="/admin/tests/pause/5" name="post_521370eb05d3f" id="post_521370eb05d3f" style="display:none;" method="post">
    <input type="hidden" name="_method" value="POST">
</form>

<a href="#" onclick="if (confirm('Are you sure?')) { document.post_521370eb05d3f.submit(); } event.returnValue = false; return false;">Un-pause</a> 

コードが問題のようです。推測する必要がある場合は、何らかの理由で送信メソッドがないdocument.post_521370eb05d3f.submit();と思います。document.post_521370eb05d3fしかし、それを修正する方法がわかりません。

4

1 に答える 1

1
$this->Html->link(__('Some Text to Click'), array(
    'admin' => true,
    'action' => 'delete',
    $delete_id,
), null, 'Are you sure?'));
于 2013-11-21T04:27:22.730 に答える