1

私は 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 がデフォルトになりますが、ユーザーはそれを変更できます。

どうすれば解決できますか?何か案が?どうもありがとう...

4

1 に答える 1

0

デフォルト値を保存したい場合は、保存できるように投稿できるようにフォームに公開する必要はありません。代わりに、アプリケーションにロジックが必要です。オブジェクトを保存する前に、デフォルトにしたい値を設定してください。preInsert メソッドを使用することで Peer クラスも安心して利用できます。

于 2011-01-24T05:28:01.997 に答える