0

私のCommentsControllerアクションの1つである「add」アクションには、やや特殊な状況があります。PostsControllerの「view」ビューに「AddComment」フォームがあるため、コメントの「add」ビューではなく「add_comment」要素があります。これは、投稿の「ビュー」ビュー内にフォームを含む要素を挿入できるということです。これがあまり複雑に聞こえないことを願っています。

これで、「add_comment」要素内で、フォームがCommentsControllerの実際の「add」アクションに送信されます。exaxmpleのユーザー入力が無効であるためにフォームを再度レンダリングする必要がある場合は、コメントの「追加」ビューを呼び出すことにより、フォームが再度レンダリングされます。この「add」ビューには、「add_comment」要素のみが含まれます。この要素には、上記のように、実際のフォームが含まれます。

これで、CSRF保護を取得するために、CommentsControllerにセキュリティコンポーネントを追加しました。CommentsControllerのすべての管理アクションは保護を取得します。つまり、トークンはフォーム内にレンダリングされ、フォームの送信時にチェックされます。

それでも、add_comments要素フォームはトークンを取得しません。おそらくそれは要素であり、対応するビューではないためです。

トークンを要素のフォームに手動で挿入するにはどうすればよいですか、またはこれをより適切に解決するにはどうすればよいですか?

ありがとうございました

編集:セットアップに関する私の他の質問も参照してください-それはそれを少し説明する必要があります

EDIT2: これは私のadd_comment要素の中にあるものです

EDIT3: これはadd_comment要素のHTML出力です。ナンスはその部分にあるべき<div style="display:none;">です。

EDIT4:Debugger::log($this->Form->request->params);要素(add_comment.ctp)とビュー(add.ctp)の中に入れて、これが出力を表示します。

また、CommentsController全体をアップロードしました(ここ)。タイプ「auth」のエラーをキャッチするためにブラックホール関数を指定したことに注意してください。これは、add_comments.ctp要素に無効なデータを入力し、フォームを送信するたびに、CommentsControllerの実際のaddアクションが呼び出される(したがって、コメントのビューを追加する)たびに、タイプ'authのブラックホールエラーが発生したためです。 '、説明できなかったので、この方法でそれを捉えました-これは私の問題に関連している可能性もあります。

4

0 に答える 0