isAuthorizedレコード ID がユーザーに属していない場合、メソッドへのアクセスを拒否するために使用しています。プロファイルには多くのドキュメントを含めることができ、ドキュメントは 1 つのプロファイルに属します。
コントローラー/DocumentsController.php
public function add($id = null) {
    if ($this->request->is('post')) {
        $this->request->data['Document']['profile_id'] = $id;
        $this->request->data['Document']['user_id'] = $this->Auth->user('id');
        $this->Document->create();
        if ($this->Document->save($this->request->data)) {
            $this->Session->setFlash(__('The document has been saved'));
            $this->redirect(array('action' => 'index'));
        } else {
            $this->Session->setFlash(__('The document could not be saved. Please, try again.'));
        }
    }
}
public function isAuthorized($user) {
    if ($this->action === 'index') {
        return true;
    }
    if (in_array($this->action, array('view', 'add', 'edit', 'delete'))) {
        $document_id = $this->request->params['pass'][0];
        if ($this->Document->isOwnedBy($document_id, $user['id'])) {
            return true;
        }
    }
    return parent::isAuthorized($this->Auth->user());
}
モデル/Document.php
public function isOwnedBy($document, $user) {
    return $this->field('id', array('id' => $document, 'user_id' => $user)) === $document;
}
Cake リンク ヘルパーを使用して、プロファイル ビューの 1 つからprofile idas$idを渡しています。docments/add
ビュー/プロファイル/view.ctp
echo $this->Html->link('New Document',
    array('controller' => 'documents', 'action' => 'add',$profile['Profile']['id'])
);
New Document from をクリックすると何が起こるかとprofiles/viewいうと、リクエストは送信されますが、リダイレクトされないか、ページが更新されるだけか、リダイレクトされて に戻るか、どちらかわかりprofiles/viewません。私の最初の推測は、内profile idのisAuthorizedコールバックでを定義していないためDocumentsController、isOwnedByfalse を返しているということです。isAuthorized内でプロファイル ID を取得する方法に関する提案はありますDocumentsControllerか?
前もって感謝します!