2017-01-10 8 views
2

外国の関係フィールドにフォーム値を書き込む最も良い方法は何ですか?SilverStripe外国関係のフィールドへの書き込み方法

$coachFieldの値を外部テーブルの特定の列に保存する必要があります。 IE:Teamオブジェクト形式の中で、私はCoachの名前(レコードのために1対1の関係を持っています)を保存する必要があります。

私はコーチの名前を取得するにはTeamonAfterWriteを使用して傾いていますが、私は最初の場所で値を取得すると、上記のすべて、これが最善の方法であるかどうかわかりません。あなたがhasoneeditモジュールを使用することができます1関係:1の場合

現在のDataObject

class Team extends DataObject { 

    // The value needs to be saved in Coach->Name 
    private static $has_one = array(
     'Coach' => 'Coach' 
    ); 

    public function getCMSFields() { 

     // The form field where to get the value from 
     $coachField = TextField::create('CoachName', 'Who is the coach'); 

    } 
} 

外国のDataObject

class Coach extends DataObject { 

    // Here's where the name should be written to 
    private static $db = array(
     'Name' => 'Varchar' 
    ); 

    private static $belongs_to = array(
     'Team' => 'Team' 
    ); 
} 

答えて

2

。それは自動魔法has_oneの関係に保存し

class Team extends DataObject { 

    // The value needs to be saved in Coach->Name 
    private static $has_one = array(
     'Coach' => 'Coach' 
    ); 

    public function getCMSFields() { 

     $fields = parent::getCMSFields(); //scaffold all fields 

     // The form field where to get the value from 
     $fields->addFieldsToTab('Root.Main', TextField::create('Coach-_1_-Name', 'Who is the coach'); 

     return $fields; 
    } 
} 

のようにフィールドの名前は HasOneName-_1_-FieldNameでなければなりません。

+0

魅力的な作品です。 – Faloude

関連する問題