Ich habe eine moneyFieldset mit 2 Feldern, Menge und Währung.Fieldset Felder erforderlichen Parameter dynamisch ändern
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);
}
Ich verwende moneyFieldset in meinem anderen Fieldset wie folgt aus:
// Price Field
$this->add(array(
'name' => 'price',
'type' => 'form.fieldset.moneyFieldset',
'attributes' => array(
'required' => true,
'invalidText' => 'Please type an amount'
),
'options' => array(
...
),
));
Wenn ich Filter wie folgt festgelegt:
function getInputFilterSpecification()
{
'price' => [
'required' => true,
'allow_empty' => false,
],
}
Es funktioniert nicht, weil Preis hat 2 Felder, also wie kann ich sagen Preis [Betrag] und preis [curreny] wird benötigt?
Ich habe es versucht, aber nichts geändert. Dies ist die Ausgabe: ''. Es gibt keinen 'required =' required'-Parameter. – Eray
Mit zf2, sagen in inputFilterSpecification, dass ein Feld oder eine Gruppe von Feld erforderlich ist, bedeutet nicht, dass ein Attribut in HTML festgelegt ist, ist es nur zur Überprüfung, wenn Sie $ form-> isValid(), überprüft alle erforderlichen Felder innerhalb der ValidationGroup – Hooli
Also muss ich auch erforderlichen Attribut auch setzen. Ich dachte, dass 'price [attributes] [required] = true' 'required = required' ergibt HTML-Attribut – Eray