我想在创建表单的类中调用方法。但我得到了这个错误。
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
代码放入我调用它的类中,它会起作用,但我希望将它放在单独的类中。
答案 0 :(得分:1)
要回答您的实际问题,您收到错误的原因是因为某个称为容器的东西没有注入您的控制器。从理论上讲,你可以通过以下方式解决这个问题:
// SomeOtherClass
$commentController = new CommentController();
$commentController->setContainer($container);
$form = $commentController->replyAction(); // Assuming replyAction has 'return $form;'
毋庸置疑,您的SomeOtherClass可能有也可能无法访问容器。
当然,真正的问题是你为什么要做这样的事情?坦率地说,这没有多大意义。开发人员将控制器与服务混合起来并不常见。
考虑更新您的问题并解释您尝试执行的操作。也许通过服务创建表单?