私は Symfony 1.4 と Doctrine 1.2 と sfDoctrineGuardPlugin を使用しています。記事作成ページがあります。私の記事テーブルには、どのユーザー (作者) が書いたかを保存するための profile_id フィールドがあります。
私の問題は、ユーザーが記事を書いてクリックして保存すると、ユーザーから profile_id を取得できても、自動的に profile_id を設定できないことです。
私の articleForm クラスでは、選択ボックスのデフォルト値を設定できますが、ユーザーはそれを変更できます。読み取り専用にしようとすると、profile_id を db に保存できません。
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 を db に保存できません。コードの 2 番目の部分がないと、現在の ID がデフォルトになりますが、ユーザーはそれを変更できます。
どうすれば解決できますか?何か案が?どうもありがとう...