在创建表单时调用null上的成员函数get()

时间:2016-12-18 13:44:37

标签: php symfony

我想在创建表单的类中调用方法。但我得到了这个错误。

Error: Call to a member function get() on null

这是应该处理表单操作的类。

class CommentController extends Controller 
{
    public function replyAction()
    {
        $comment = new Comments();

        $form = $this->createFormBuilder($comment)
        ->add('name', TextType::class)
        ->add('text', TextType::class)
        ->add('reply', SubmitType::class, array(
            'label' => 'Reply'))
        ->getForm();

        return $this->$form;
    }
}

这就是我从另一个类中调用该方法的方法

$form = (new CommentController())->replyAction();

如果我将replyAction代码放入我调用它的类中,它会起作用,但我希望将它放在单独的类中。

1 个答案:

答案 0 :(得分:1)

要回答您的实际问题,您收到错误的原因是因为某个称为容器的东西没有注入您的控制器。从理论上讲,你可以通过以下方式解决这个问题:

// SomeOtherClass
$commentController = new CommentController();
$commentController->setContainer($container);
$form = $commentController->replyAction(); // Assuming replyAction has 'return $form;'

毋庸置疑,您的SomeOtherClass可能有也可能无法访问容器。

当然,真正的问题是你为什么要做这样的事情?坦率地说,这没有多大意义。开发人员将控制器与服务混合起来并不常见。

考虑更新您的问题并解释您尝试执行的操作。也许通过服务创建表单?