0

Task という名前のエンティティがあり、フォーム用の Symfony TaskType.php を作成します。デフォルトで endDate 日時フィールドを startDate 日時フィールド (必須) の入力に設定することが私の目的です。

これを試しましたが、うまくいきません。

$builder->add('name');
    $builder->add('startDate', 'datetime');
    $builder->add('endDate', 'datetime', array(
        'empty_value' => array('year' => 'Year', 'month' => 'Month', 'day' => 'Day'),
        'required' => false,
        'data' => isset($options['data']) ? $options['data']->getEndDate() : $options['data']->getStartDate(),

    ));

例外:

パラメータ {"1":"test","2":"2013-03-30 00:00: で 'INSERT INTO Task (name, startDate, endDate) VALUES (?, ?, ?)' を実行中に例外が発生しました: 00","3":null}:

SQLSTATE [23000]: 整合性制約違反: 1048 列 'endDate' を null にすることはできません 500 内部サーバー エラー - DBALException 1 リンクされた例外:

PDOException »
4

2 に答える 2

3

はい、もちろんうまくいきません。時間がない場合は、この「チートシート」を読むことができます - http://blog.stfalcon.com/wp-content/uploads/2012/01/how_symfony2_forms_works.pdf

データを設定した後に値を設定できます。たとえば、次を試してください。

$form->bindRequest($request); 
// now you can get data and set 
$form->get('endDate')->setData($form->get('startDate')->getData());

それが役に立てば幸い。

于 2013-03-24T21:24:08.063 に答える
0

インスタンス化時にエンティティ クラスに値を設定することもできます。

class Task
{
    protected $startDate;
    protected $endDate;

    public function __construct($startDate)
    {
        $this->startDate = $startDate;
        $this->endDate = $startDate;
    }
}
于 2013-03-27T01:20:42.033 に答える