私はSymfony 1.4とDoctrine 1.2とsfDoctrineGuardPluginを使用しています。私は記事作成ページを持っています。私の記事の表には、どのユーザー(著者)が書いたかを保存するためのprofile_idフィールドがあります。sfDoctrineGuardPluginを使用しています。ユーザーの選択なしでidフィールドを設定したい
私の問題は、ユーザーが記事を書いて保存すると、私がユーザーからprofile_idを取得できる場合でも、私はprofile_idを自動的に設定できません。
私のarticleFormクラスでは、選択ボックスのデフォルト値を設定できますが、ユーザーはそれを変更できます。私はそれを読み取り専用にしようとすると、profile_idはdbに保存することはできません。私が使用し、それが読み取り専用にするために
// 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ここ
はでArticleFormクラスからの私のconfigure関数でありますdbに保存できません。コードの2番目の部分がなければ、現在のIDがデフォルトとして指定されましたが、ユーザーはそれを変更できます。
どうすれば解決できますか?何か案が? ありがとうございました...
フォームで 'sfContext :: getInstance()'を使用する代わりに、コンストラクタにユーザーオブジェクトまたはuser_id値を注入する必要があります。また、これは助けてください:http://stackoverflow.com/questions/4742099/symfony-admin-generator-add-user-id-before-saving/4744077#4744077 – Maerlyn
ええ、それは私が探しているものです。おかげで多くのMaerlyn –