私のZF2アプリでは、いくつかのオプションのフィールドがあるフォームがあります。ユーザーがそのフィールドを空白のままにしておくと、dbでNULLに設定する必要がありますが、動作しません。ZF2 - inputFilter - > nullに設定する
例フィールド:
$this->add(array(
'name' => 'productId',
'type' => 'select',
'options' => array(
'value_options' => array(
'global' => 'Global option', // this should be null
'mobile' => 'Another option'
)
),
));
とフィルタ:
$inputFilter->add(array(
'name' => 'productId',
'validators' => array(
array(
'name' => 'Callback',
'options' => array(
// 'messages' => array(
// \Zend\Validator\Callback::INVALID_VALUE => $value,
//),
'callback' => function ($value) {
if($value === 'global')
{
$value = null;
//return true;
// echo '<pre>' . var_export($value, true) . '</pre>';
// die();
}
}
),
),
),
));
"モバイル" オプションを選択すると、コードのこの作品は、作品。しかし、 'グローバル'オプションでは動作しません。 ご覧のとおり、コールバックで値がオーバーライドされ、NULLを返すように基本的なデバッグを行っています。かかわらず、そのバリのは言う:
は、だから私は、エラーの下にもたらし、コールバックにtrueを返すことを試みた:私は私のデシベルにヌルのparamを渡すことが出来るのですかarray ( 'productId' => array ( 'callbackValue' => 'The input is not valid', ), )
Statement could not be executed (23000 - 1452 - Cannot add or update a child row: a foreign key constraint fails (
app
.codes
, CONSTRAINTfk_products_id
FOREIGN KEY (productId
) REFERENCESproducts
(id
)))
?このフィールドをフォームから完全に切り取った場合、無視され、すべてが機能します。