2012-02-24 4 views
1

私は、エンティティの床とLeaseTermを持っているの作成からユーザーを防ぎます。 Floorには多くのLeaseTermがあります。私LeaseTermでSymfony2の/ DC2/PHP:よそのエンティティ

は、フォームを作成し、私は隠しfloor_idフィールドを持っています。

私の質問は:どのように私は効果的に(各フロアには、それは所有者の持っている)自分自身floor_idフィールドを変更すると、彼は自分のdoesntの床用LeaseTermsを作成するからユーザーを防ぐことができますか?

答えて

3

は、概念的には、現在のユーザが/床へのアクセス権を持っている所有していることを保証し、提出時にfloor_idを検証するために「どのように」です。理論的には、たとえそれが変更されたとしても、それがまだアクセスできるIDである限り、操作はおそらく有効です(そうでなければ、送信コンテキストでの追加の検証が必要です)。

Symfony 2では特定の実装として、これはコントローラで直接ロジックで、あるいは代わりに「Data Transformer」および/またはCustom Validatorからのヘルプで実現できます。

これが役に立ちます。

+0

ので、symfonyの2の文脈では、私がusers_idログインし比較することがあり、$ floor-う> getOwnerメソッド() - >のgetId()?一致しない場合は、例外をスローすることをお勧めします。 – Tool

+0

はい、それは考えているでしょう:)。あなたはおそらく、例外をスローしたいと思うかもしれません。後で、「入力例外」や何らかの種類の403 Forbidden、404、またはその他のカスタムレスポンスで呼ぶことに気をつけることができます。 – jstephenson

関連する問題