Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php symfony 3表单不适用于细枝渲染(控制器(';…';)_Php_Forms_Symfony_Twig - Fatal编程技术网

Php symfony 3表单不适用于细枝渲染(控制器(';…';)

Php symfony 3表单不适用于细枝渲染(控制器(';…';),php,forms,symfony,twig,Php,Forms,Symfony,Twig,我想建立一个导航栏,显示在每个页面上。 因此,我将以下代码添加到base.html.twig {{ render(controller( 'AppBundle:Navigation:index' )) }} 但是$form->isSubmitted()返回false和$form->getData()返回null。这仅适用于上面的细枝渲染方式。如果我正常地通过/Navigation-路径打开导航:索引页面,$form->isSubmitted()返回true,$form->getData

我想建立一个导航栏,显示在每个页面上。 因此,我将以下代码添加到
base.html.twig

{{ render(controller(
    'AppBundle:Navigation:index'
)) }}
但是
$form->isSubmitted()
返回
false
$form->getData()
返回
null
。这仅适用于上面的细枝渲染方式。如果我正常地通过
/Navigation
-路径打开导航:索引页面,
$form->isSubmitted()
返回
true
$form->getData()
返回表单数据

以下是NavigationController:

<?php

namespace AppBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use AppBundle\Entity\Language;
use Doctrine\ORM\EntityManagerInterface;
use AppBundle\Form\Type\NavigationType;
class NavigationController extends Controller
{
    /**
     * @Route("/navigation", name="navigation")
     */
    public function indexAction(Request $request, EntityManagerInterface $em)
    {
        $language = null;
        $form = $this->createForm(NavigationType::class);

        $form->handleRequest($request);
        dump($language);
        dump($form);
        if($form->isSubmitted() && $form->isValid())
        {
            dump('is valid');
        }
        $data = $form->getData();
        dump($data);
        dump('isSubmitted(): ' . $form->isSubmitted());
        dump($form->isSubmitted());

        // replace this example code with whatever you need
        return $this->render('navigation/index.html.twig', array(
            'form' => $form->createView(),
        ));
    }
}

好的,我现在找到了一个解决方法。需要手动使
$request
-对象可用

找到了这样做的方法

只需将细枝代码更改为:

{{ render(controller("SomeBundle:Foo:bar", {'request': app.request) }}
在action函数中添加$request变量

public function barAction($request) {
    // other your code
}

现在表单代码应该可以工作了。

好的,我现在找到了一个解决方法。需要手动使
$request
-对象可用

找到了这样做的方法

只需将细枝代码更改为:

{{ render(controller("SomeBundle:Foo:bar", {'request': app.request) }}
在action函数中添加$request变量

public function barAction($request) {
    // other your code
}

现在表单代码应该可以工作了。

如果嵌入控制器,Symfony会通过内部子请求进行嵌入,这就是为什么isSubmitted为false,getData返回null

一种解决方法是按照您发现的那样传递原始请求


更好的选择是使用请求堆栈(通过
request\u stack
service IIRC提供)及其
getMasterRequest
方法。

如果嵌入控制器,Symfony通过内部子请求执行,这就是为什么issubmitt为false,getData返回null

一种解决方法是按照您发现的那样传递原始请求


更好的选择是使用请求堆栈(通过
request\u堆栈
serviceirc提供)及其
getMasterRequest
方法。

我也有类似的问题。我可以使用控制器或路由名称在细枝中渲染,但我在目标控制器上使用的knp分页调用认为该路由是渲染模板的控制器的路由,该模板随后按上述方式调用render。我有一个类似的问题。我可以使用控制器或路由名称在细枝中进行渲染,但我在目标控制器上使用的knp分页调用认为该路由是渲染模板的控制器的路由,该模板随后按上述方式调用render。