私はmoneyFieldsetに2つのフィールド、金額、通貨を設定しました。フィールドセットの必須パラメータを動的に変更する
class MoneyFieldset ...
{
public function __construct($name = null, $options = array())
{
parent::__construct($name, $options);
$this->setHydrator(...);
$this->add(array(
'name' => 'currency',
'type' => 'select',
'options' => array(
'value_options' => \Core\Service\Money::getAvailableCurrencies(true),
),
'attributes' => array(
'value' => \Core\Service\Money::DEFAULT_CURRENCY,
),
));
$this->add(array(
'name' => 'amount',
'type' => 'text',
));
}
}
public function getInputFilterSpecification()
{
$default = [
'amount' => [
'required' => false,
'allow_empty' => true,
'filters' => [
['name' => AmountFilter::class]
],
'validators' => [
]
],
'currency' => [
'required' => false,
'allow_empty' => true,
'filters' => [
['name' => StringToUpper::class]
],
'validators' => [
]
]
];
return \Zend\Stdlib\ArrayUtils::merge($default, $this->filterSpec, true);
}
私はこのように私の他のフィールドセットにmoneyFieldsetを使用しています:
// Price Field
$this->add(array(
'name' => 'price',
'type' => 'form.fieldset.moneyFieldset',
'attributes' => array(
'required' => true,
'invalidText' => 'Please type an amount'
),
'options' => array(
...
),
));
私はこのようなフィルタを設定します。価格が持っているので、それが働いていない
function getInputFilterSpecification()
{
'price' => [
'required' => true,
'allow_empty' => false,
],
}
2フィールドなので、どうすればの価格[額]と価格[curreny]が必要ですか?
私はそれを試しましたが、何も変わりませんでした。これは出力です: '' 'required = 'required''パラメータはありません。 – Eray
zf2では、inputFilterSpecificationでフィールドまたはフィールドのグループが必要であると言って、必須の属性がHTMLに設定されているわけではなく、$ form-> isValid()を実行したときに検証のためだけです。 validationGroup内 – Hooli
私はまた、必要な属性も設定する必要があります。私は 'price [attributes] [required] = true'が' required = required' HTML属性を生成すると考えました – Eray