表单未在Facebook中正确传递隐藏字段值,但在其他地方可以

表单未在Facebook中正确传递隐藏字段值,但在其他地方可以,facebook,forms,symfony-forms,Facebook,Forms,Symfony Forms,我有一个脚本,它首先检查表单页面是否从GET参数引用 $page['is_referred'] = isset($_GET['rfr']) ? 1 : 0; 然后,该设置值将用作Symfony2形式的隐藏字段的值 $form = $app['form.factory']->createBuilder('form', $data) //.... ->add('referred', 'hidden', array( 'data' => $page[

我有一个脚本,它首先检查表单页面是否从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();
然后

当url中有
?rfr
时,主站点上的隐藏字段可以读取,但当在Facebook中设置iframed并且出现
?rfr
时,会显示$msg_noreferer消息。你知道为什么会这样吗

编辑:我还应该提到,当我检查源代码时,Facebook中的字段值设置正确,但它似乎没有正确发布数据

我还应该提到,当我检查源代码时,Facebook中的字段值设置正确,但它似乎没有正确地发布数据

我想说的是,值已经发布了,但是表单验证不接受它,因为在验证时隐藏字段不会添加到表单中


如果在处理从浏览器收到的POST请求时,向表单中添加隐藏字段的代码实际上正在执行,您是否检查过这一点?

大量密集搜索表明Facebook不允许发布隐藏的表单字段。但是,无法验证它。这绝对是错误的。iframe内部发生的事情与Facebook无关。
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;
        }
        //..
    }
}