我使用的Symfony 1.4和条令1.2和sfDoctrineGuardPlugin。我有一篇文章创建页面。在我的文章表上,我有profile_id字段用于保存哪个用户(作者)写了它。使用sfDoctrineGuardPlugin。要设置id字段,而无需用户选择
我的问题是,当用户写了一篇文章,然后点击保存,即使我能得到来自用户PROFILE_ID,我不能自动设置PROFILE_ID。
在我articleForm类,我可以设置选择框默认值,但用户可以改变它。如果我试图让它只读,profile_id不能保存在分贝。
这里是articleForm类我的配置功能:
// getting user_id $user = sfContext::getInstance()->getUser(); $user_id = $user->getGuardUser()->getId();
// 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']);
为了使它只读的,我用:
$this->offsetUnset("profile_id");
但正如我以前说过的,这样一来,PROFILE_ID无法保存在数据库。如果没有代码的第二部分,当前的id作为默认值,但用户可以更改它。
该如何解决呢?任何想法? 非常感谢...
您应该在表单中使用`sfContext :: getInstance()`,而不是在构造函数中注入用户对象或user_id值。此外,这应该有所帮助:http://stackoverflow.com/questions/4742099/symfony-admin-generator-add-user-id-before-saving/4744077#4744077 – Maerlyn 2011-01-24 10:16:36
是的,这就是我所期待的。非常感谢Maerlyn – 2011-01-26 03:38:28