1

フォーム ページが GET パラメータから参照されているかどうかを最初に確認するスクリプトがあります。

$page['is_referred'] = isset($_GET['rfr']) ? 1 : 0;

次に、その設定値が Symfony2 フォームの非表示フィールドの値として使用されます

$form = $app['form.factory']->createBuilder('form', $data)
    //....
    ->add('referred', 'hidden', array(
        'data' => $page['is_referred'],
    ))
    ->getForm();

それから

if ('POST' === $request->getMethod()) {

    $form->bindRequest($request);

    if ($form->isValid()) {

        //...
        $referred  = $form->get('referred')->getData();

        $msg_referer   = "Thanks from Referrer";
        $msg_noreferer = "Thanks";

        if( 1 == $referred ){
            $page['thanks'] = $msg_referer;
        }else{
            $page['thanks'] = $msg_noreferer;
        }
        //..
    }
}

非表示フィールドは、URL に含まれている場合、メイン サイトでは問題なく読み取られますが?rfr、Facebook で iframe を使用して?rfr存在する場合、代わりに $msg_noreferer メッセージが表示されます。なぜこれが起こるのかについてのアイデアはありますか?

編集:ソースを確認すると、Facebookでフィールド値が正しく設定されていることにも言及する必要がありますが、データが正しく投稿されていないようです

4

1 に答える 1

0

また、ソースを確認したときにフィールド値が Facebook で正しく設定されていることにも言及する必要がありますが、データが正しく投稿されていないようです

値は問題なく投稿されますが、非表示フィールドが検証時にフォームに追加されないため、フォーム検証はそれを受け入れません。

ブラウザから受け取った POST リクエストを処理する際に、フォームに隠しフィールドを追加するコードが実際に実行されているかどうかを確認しましたか?

于 2012-07-13T17:30:38.917 に答える