我现在试图在我的应用程序中找到一个错误,也许有些人可以提示:
我正在使用Symfony2,FOSUserBundles和Bootstrap作为表单。在我的控制器中,我在createAction
内创建了一个表单,用于根据用户输入小广告:
$smallAd = new SmallAd();
$user = $this->getUser();
$smalladForm = new SmallAdType();
$smalladForm->setUser($user);
$form = $this->createForm($smalladForm, $smallAd);
创建表单实例后,我设置了用户,因为我需要formbuilder的用户ID。在以前的版本中,我通过构造函数设置用户,这在我的本地机器上没有任何区别。
表单类SmallAdType看起来像这样(我删除了大多数表单字段):
public $user;
public function setUser($user)
{
$this->user = $user;
}
public function buildform(FormbuilderInterface $builder, array $options)
{
var_dump($this->user->getId());
$builder
...
->add('user', 'entity', array(
'class' => 'AppBundle\Entity\User',
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('u')
->where('u.id = :id')->setParameter('id',$this->user->getId());
},
'label' => 'User',
'required' => true
))
.....
->add('save', 'submit', array('label' => 'Save the Ad'));
}
我的问题:在我的本地开发环境中,Everythings工作正常,在prod服务器上我收到以下错误消息:
int(2)
Fatal error: Using $this when not in object context in xxxxxxx/Form/Type/SmallAdType.php on line 74
int(2)
行来自var_dump($this->user->getId());
函数,在这种情况下来自我的用户的正确值。我也可以转储完整的用户对象,这对我来说意味着它就存在了。
我检查了本地和生产服务器上的代码和配置几次,我发现没有区别。此外,我不知道现在的样子。任何建议都非常受欢迎。