2012-01-09 19 views
0

Symfony 1.4.11私はフォームにHTMLチェックボックスで設定されたブール値フィールドを持っています。値が0(オフ)のとき、私は試してみて、それから、常に0として保存する保存すると、入力値がないので、その後のチェックボックスのHTMLは、私がsymfonyは常にチェックボックスをゼロとして保存します

<input type="checkbox" value="" name="gift_type[valid]"> 

前提としています。

チェックボックスに使用しているコードは、symfonyの管理者ジェネレータによって生成されたので、「すぐに使える」と思っていました。真の値をオフにすると、期待通りに機能します。

schema.ymlの

GiftType: 
    columns: 
    valid: { type: boolean, notnull: true, default: true } 

BaseGiftTypeForm.class.php

$this->setWidgets(array(
    'valid' => new sfWidgetFormInputCheckbox() 
)); 
$this->setValidators(array(
    'valid' => new sfValidatorBoolean(array('required' => false)) 
)); 

答えて

0

、 あなたはそれがsymfonyによって生成されていますよろしいですか? (IDが欠落しています)

とにかく表示されているコードはすべてOKですが、スキーマの種類を変更する必要はありません。 (ping @ richrosa)。 sfValidatorBooleanはブール値を返し、オブジェクトに渡され、オブジェクトが保存されます。モデルをデバッグする必要があります。ボックス外では、Doctrine Admin Generatorのブール値フィールドは完全に正常に動作します。

あなたは、デバッグを支援するために、あなたのGiftTypeFormクラスでこのコードを追加することができます。

protected function doUpdateObject($values) 
    { 
    var_dump($values);die(); 
    $this->getObject()->fromArray($values); 
    } 

あなたが「有効」キーブール値が表示されない場合は、検証プロセスエラーがある、それはここにある場合は、あなたが持っていますモデルの問題(あなたはsaveメソッドを上書きしましたか?)

+0

sfWidgetFormInputCheckboxは、/ lib/vender/symfony/widgetの同じ名前のファイルによって上書きされたようですが、そのレンダリングメソッドは '$ format = <<< FORMAT

FORMATを; 'Iを除去それはID付きで出力され、期待どおりに動作します。このコードがどこから来たのか分かりません(私はオリジナルの開発者ではありません)が、私の問題を解決するはずです。 – uberweb

0

私はsymfonyはどのように動作するかを認識していませんよ。通常のPHP/HTMLでは、チェックボックスの値はチェックされているかどうかには関係ありません。チェックボックスをオンにすると、その値はフォームの投稿に送信されます。チェックされていなければ、それは提出されません。

0

データ型をtinyintに変更してください。

valid: { phpName: Valid, type: TINYINT, size: '4', required: false } 

ここには、デフォルト値とラベルの付いたチェックボックスがあります。あなたのHTMLチェックボックスがおかしい

$this->setWidgets(array(
'valid' => new sfWidgetFormInputCheckbox(array('label'=>'My Label') , array('value' => '1')); 
関連する問題