0

すべてのユーザーのすべてのプロファイルを保存するプロファイル テーブルがあります。さまざまなタイプのユーザーがいて、特定のフィールドを選択するためのさまざまな選択オプションを各タイプのユーザーに持たせたいと考えています。
したがって、どちらのユーザー タイプも登録期間を選択できますが、オプションが異なります。1 つは 2 年を選択でき、もう 1 つは選択できません。
schema.yml は次のようになります。

ユーザープロフィール:

columns:
    username:
        type: string(255)
        notnull: true
        unique: false

WriterUserProfile:

inheritance:
    type: column_aggregation
    extends: UserProfile
columns:
    register_time:
        type: enum
        values:
            - 6 months
            - 1 year
            - 2 years
            - Other
        default: other

ReaderUserProfile:

inheritance:
    type: column_aggregation
    extends: UserProfile
columns:
    register_time:
        type: enum
        values:
            - 6 months
            - 1 year
            - Other
        default: other

何らかの理由で「2 年」オプションを選択できません。フォームに「無効」エラーが表示されます。
「2 年」と「その他」はどちらも第 3 選択肢なので一致しますか?

4

1 に答える 1

0

一般的ではない他の分野はありますか?この 1 つのフィールドだけでは、列集計を使用する十分な理由にはなりません。とにかく、同じフィールドが複数のサブクラスに表示される場合は、フィールドを上に移動する必要があり、フィールド名はすべての関連クラス (UserProfile、WriterUserProfile、ReaderUserProfile の場合) 間で一意にする必要があります。

フォームの選択肢フィールドのオプションを変更できます。

$choices = array('0' => 'a', '1' => 'b');
$this->getWidget('register_time')->setOption('choices', $choices);
$this->getValidator('register_time')->setOption('choices', array_keys($choices));
于 2013-06-25T20:11:15.980 に答える