1

私はcakephp 2.3.0を使用しています。私がやろうとしているのは、ユーザーにリンク (画像の形で) をクリックさせることです。そのユーザーのアクションは、そのユーザーのデータベースから一部のデータを削除します。

私の見解では、このコード スニペットは、実際にはテーブル内の列です。「delete」という単語については、($this->Html->image() を使用して) 画像にしたいのですが、cakephp はそれについて文句を言います。API によると、そのパラメーターは文字列のみです。

$this->Form->postLink(
                'delete', 
                array('action' => 'deleteActivity', $myActivity['Activity']['id']),
                array('confirm' => 'Are you sure?')),

私が試みているコントローラーの機能は次のとおりです。

public function deleteActivity($id) {

        if ($this->Post->delete($id)) {             
            $this->Session->setFlash('The activity with id: ' . $id . ' has been deleted.');
            $this->redirect(array('action' => 'landingPage'));
        }
    }

以下のエラーが表示されます。form タグを post でラップしてもうまくいかないようです。私がやろうとしているのは、CakePHPでこれを行うベストプラクティスの方法ですか?

致命的な誤り

エラー: 非オブジェクトでのメンバー関数 delete() の呼び出し

生成された HTML は次のとおりです。

<td><form action="/activities/index.php/activities/deleteActivity/4"      name="post_515496f40ca77" id="post_515496f40ca77" style="display:none;" method="post">    <input type="hidden" name="_method" value="POST"/></form><a href="#" onclick="if (confirm(&#039;Are you sure?&#039;)) { document.post_515496f40ca77.submit(); } event.returnValue = false; return false;">delete</a></td>   
4

1 に答える 1

3

エラー:

このエラーは基本的に「Postオブジェクトのようなものはありません。アクセスしようとしているこの 'delete' メソッドをどうすればよいかわかりません」(つまり、Postモデルがまだロードされていない) ことを示しています。

さらなる説明/解決策:

本質的に、現在のコントローラー以外のモデルにアクセスすることはできません。

したがって、あなたの場合、Postモデルをロードせずにモデルに直接アクセスすることはできません:

$this->loadModel('Post');
$this->Post->delete($id);

または、現在のモデル (例: Activity) に関連付けられている場合は、次のようにアクセスできます。

$this->Activity->Post->delete($id);
于 2013-03-28T20:57:32.917 に答える