2

read現在、Sonata Admin を使用して、ブール フィールドを持つエンティティを含むデータグリッドを生成しています。このプロパティをフィルタリングして、デフォルトで に設定したいと思いますfalse

そのため、次を管理者クラスに追加しました。

protected $datagridValues = array(
    'read' => array('value' => false),
);

それでも、うまくいかないようです。生成された選択リストは次のとおりです。

<select id="filter_read_value" name="filter[read][value]" class="span8">
    <option value=""></option>
    <option value="1">oui</option>
    <option value="2">non</option>
</select>

valuefalse は空のオプションである 0 になるため、これは正常であると思います。

そのため、次のような定数を使用しました。

const STATUS_READ = 1;
const STATUS_UNREAD = 2;

それは機能しますが、これら2つの不要な定数を回避するための適切な解決策があるかどうか疑問に思っていますか?

4

3 に答える 3

4

おそらく getFilterParameters を使用できます:

<?php
public function getFilterParameters()
{
    $this->datagridValues = array_merge(array(
            'booleanField' => array(
                'value' => '0',
            )
        ),
        $this->datagridValues

    );
    return parent::getFilterParameters();
}
于 2013-08-20T08:32:17.470 に答える
0

最善の解決策は、sonata-admin のタイプを使用することです。

<?php
protected $datagridValues = [
    'read' => [
        'type' => Sonata\CoreBundle\Form\Type\EqualType::TYPE_IS_EQUAL,
        'value' => Sonata\CoreBundle\Form\Type\BooleanType::TYPE_NO,
    ]
];
于 2016-11-15T15:22:31.690 に答える
0

列挙をデータベースに永続化する方法については、情報が少なすぎますが、値定数を型クラスの可能なオプションと一緒に保存することはかなり標準的です。オプションを整数として参照しない限り、何も問題はありません。

于 2013-08-17T12:28:02.967 に答える