2012-04-26 10 views
0

失敗しました。最初のクリックでオブジェクトが正しく削除されますが、deleteActionが呼び出される前に2番目のオブジェクトが失敗する(古いものです)。どうすればこれを防ぐことができますか?deleteActionは、delete-のリンクが3回または別のユーザーからクリックされた例えば

/** 
* action delete 
* 
* @param $upload 
* @dontvalidate $upload 
* @return void 
*/ 
public function deleteAction(Tx_MyExt_Domain_Model_Upload $upload) { 
    $this->uploadRepository->remove($upload); 
    $this->flashMessageContainer->add('Your Upload was removed.'); 
    $this->redirect('list'); 
} 

は、私は例外を取得:

値がタイプ "Tx_MyExt_Domain_Model_Download" でなければなりませんが、しかし、タイプ "NULL" でした。それは前に失敗したので、助けにはならない行為の内側に何かをやって

...

+0

あなたはそれが失敗した何を意味するのですか?例外がスローされましたか?エラーメッセージはありますか? – peter

+0

私の遅い答えは間違いありませんが、私は上記の質問でそれを精緻化しました。 – AdON

答えて

0

私はあなたのように見えるいくつかの流体のマークアップを持っていると仮定しています:

<f:link.action action="delete" arguments="{upload:uploadObjectToDelete}" > ... 

言うどちら:合格uploadObjectToDeleteは、ユーザーがこのリンクをクリックしたときに削除アクションに反対します。ユーザーがそのリンクをクリックしたときとExtBase PropertyMapperは、コントローラと削除アクションにそれをハンドオフするデータベース内uploadObjectToDeleteを見つけるために、リンクで送信された引数を使用しています。削除アクションが正常にデータベースからオブジェクトを削除し、リストアクションにリダイレクトするときに、ページがリロードされることを最初のクリック、後

。ただし、今回はuploadObjectToDeleteオブジェクトがnullです。だから、PropertyMapperが削除アクションのためupload引数を検索しようともう一度クリック、ためを探すために何のオブジェクトがありません。そして、upload引数が必要なので(つまり、nullにはできません)、例外が発生します。 uploadObjectToDeleteオブジェクトがnullあるとき、それはこれらのリンクを表示しないように

オプション1

はあなたのリストのアクションを変更し

。これはおそらく最良のオプションです。

<f:if condition="uploadObjectToDelete"> 
    <f:link.action action="delete" arguments="{upload:uploadObjectToDelete}" > ... 
</f:if> 

オプション2

null引数を受け取るためにあなたの削除アクションを変更

public function deleteAction(Tx_MyExt_Domain_Model_Upload $upload = null) { ... 

しかし、このオプションは意味がありません。あなたはなぜあなたのユーザーが既にヌルであるオブジェクトを試して削除することを許可しますか?

これらは単なる提案です。

+0

ああ、いいです、オプション2は私のためのトリックでした。たとえば、別のタブなど、古いページが開かれているときに問題が発生する可能性があります。ユーザーがオブジェクトを1つのタブで正常に破棄しましたが、もう1つのタブに削除リンクがありました。そして、私はこの時点でフロントエンドで例外を取得したくないだけでした。どうもありがとう! – AdON

関連する問題