使用 sfDoctrineGuardPlugin。想要设置 id 字段而不需要用户选择
我正在使用 Symfony 1.4 和 Doctrine 1.2 以及 sfDoctrineGuardPlugin。我有一个文章创建页面。在我的文章表上,我有 profile_id 字段用于保存哪个用户(作者)撰写的文章。
我的问题是,当用户写一篇文章并单击保存时,即使我可以从用户那里获取 profile_id,我也无法自动设置 profile_id。
在我的articleForm类中,我可以设置选择框的默认值,但用户可以更改它。如果我尝试将其设置为只读,则 profile_id 无法保存在数据库上。
这是我在articleForm类中的配置函数:
// 获取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 将作为默认值,但用户可以更改它。
怎么解决呢?有什么想法吗? 多谢...
I am using Symfony 1.4 and Doctrine 1.2 and sfDoctrineGuardPlugin. I have a article create page. On my article table, i have profile_id field for saving which user (author) wrote it.
My problem is, when a user write an article and click to save, even if i can get profile_id from user, i cant set profile_id automatically.
In my articleForm class, i can set default value for select box, but user can change it. If i try to make it read only, profile_id cannot be saved on db.
Here is my configure function from articleForm class:
// 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']);
To make it read only, i used:
$this->offsetUnset("profile_id");
But as i said before, this way, profile_id cannot saved on db. Without second part of code, current id came as default but users can change it.
How can solve it? Any idea?
Thanks a lot...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你走错了路,朋友,如果你想保存默认值,不需要在表单中公开它就可以发布,这样你就可以保存。相反,您的应用程序应该具有逻辑。只需在保存对象之前设置您想要的默认值即可。您也可以通过使用 preInsert 方法和平地使用 Peer 类。
you are on the wrong track pal, if you want to save default value, no need to expose it in the form to be able to be posted so you can save. Instead, you should have the logic at your application. Just set whatever value you would like to be default before you save the object. You can make use of Peer class as well peacefully by using preInsert method.