Symfony1 使用sfDoctrineGuardPlugin。要在没有用户选择的情况下设置id字段吗

Symfony1 使用sfDoctrineGuardPlugin。要在没有用户选择的情况下设置id字段吗,symfony1,doctrine,symfony-forms,doctrine-1.2,sfdoctrineguard,Symfony1,Doctrine,Symfony Forms,Doctrine 1.2,Sfdoctrineguard,我正在使用Symfony 1.4和Doctrine 1.2以及sfDoctrineGuardPlugin。我有一个文章创建页面。在我的文章表中,我有一个profile_id字段,用于保存编写它的用户(作者) 我的问题是,当用户写文章并单击保存时,即使我可以从用户那里获得profile\u id,我也无法自动设置profile\u id 在我的articleForm类中,我可以为选择框设置默认值,但用户可以更改它。如果我尝试将其设置为只读,则无法在db上保存配置文件id 以下是articleFor

我正在使用Symfony 1.4和Doctrine 1.2以及sfDoctrineGuardPlugin。我有一个文章创建页面。在我的文章表中,我有一个profile_id字段,用于保存编写它的用户(作者)

我的问题是,当用户写文章并单击保存时,即使我可以从用户那里获得profile\u id,我也无法自动设置profile\u id

在我的articleForm类中,我可以为选择框设置默认值,但用户可以更改它。如果我尝试将其设置为只读,则无法在db上保存配置文件id

以下是articleForm类中的配置函数:


//正在获取用户id
$user=sfContext::getInstance()->getUser();
$user_id=$user->getGuardUser()->getId()

为了使其只读,我使用了:


$this->offsetUnset(“profile_id”);

但正如我之前所说,这样,profile_id就不能保存在db上。没有代码的第二部分,当前id是默认的,但用户可以更改它

如何解决呢?有什么想法吗?
非常感谢…

您走错了方向,如果您想保存默认值,无需在表单中公开它,以便能够发布,以便保存。相反,您应该在应用程序中具有逻辑。在保存对象之前,只需设置任何默认值即可。您也可以通过使用preInsert方法和平地使用对等类。

在表单中不使用
sfContext::getInstance()
,而应该在构造函数中插入用户对象或用户id值。还有,这应该会有帮助:是的,这就是我要找的。非常感谢Maerrlyn在您发表评论之前发送的Maerlyn链接解决了我的问题。谢谢你,塞拉洛
// converting for profile table
$converter = Doctrine_Query::create()
            ->select('*')
            ->from('profile')
            ->where('sf_guard_user_id = ?', $user_id);

// fetching
$result = $converter->fetchArray();

$this->widgetSchema->setDefault('profile_id', $result[0]['id']);