首先:这是一个架构问题。请不要回答如何解决技术问题,这已经在几个地方完成了,例如:https://github.com/zendframework/zf2/issues/2761
我似乎没有得到它。 ZF2中的表单元素不仅标记为必需,而且也是硬编码的。
示例\ Zend \ Form \ Element \ Select
public function getInputSpecification()
{
$spec = array(
'name' => $this->getName(),
'required' => true,
);
if ($validator = $this->getValidator()) {
$spec['validators'] = array(
$validator,
);
}
return $spec;
}
我无法理解这不是可选的。我想开箱即用ZF2 Elements,现在我必须扩展我需要使用的所有元素。
因为在大多数表单中我们都有一些可选元素,这意味着我们总是需要使用自己的派生类。
但这似乎不对,所以我希望有人可以帮我解释。
答案 0 :(得分:1)
所以你告诉我们不要以技术方式回答。最终,这意味着您想要争论ZF2给出的默认值。可以说这使得它完全基于意见,因此应该关闭。
现在用户#somenumber告诉你,Zend\Form
几乎没有任何硬编码。它都是默认值,坦率地说 - 是的,这是基于意见的 - ZF2中的默认值非常棒。
您不需要覆盖元素,只需要覆盖required-flag即可。当然,如果你想要一个全局默认值为false,那么你必须覆盖,但这就是ZF2的美妙之处。你可以按照自己想要的方式制作一切。
默认情况下默认需要的元素是一件好事。我非常确定在互联网上找到的所有表单元素中有超过50%是必需的。因此,默认设置是一个很好的决定。