@@ -49,10 +49,7 @@ class Container extends Nette\ComponentModel\Container implements \ArrayAccess
4949 public function setDefaults (array |object $ data , bool $ erase = false ): static
5050 {
5151 $ form = $ this ->getForm (false );
52- if (!$ form || !$ form ->isAnchored () || !$ form ->isSubmitted ()) {
53- $ this ->setValues ($ data , $ erase );
54- }
55-
52+ $ this ->setValues ($ data , $ erase , $ form ?->isAnchored() && $ form ->isSubmitted ());
5653 return $ this ;
5754 }
5855
@@ -61,20 +58,20 @@ public function setDefaults(array|object $data, bool $erase = false): static
6158 * Fill-in with values.
6259 * @internal
6360 */
64- public function setValues (array |object $ values , bool $ erase = false ): static
61+ public function setValues (array |object $ values , bool $ erase = false , bool $ onlyDisabled = false ): static
6562 {
6663 $ values = $ values instanceof \Traversable
6764 ? iterator_to_array ($ values )
6865 : (array ) $ values ;
6966
7067 foreach ($ this ->getComponents () as $ name => $ control ) {
7168 if ($ control instanceof Control) {
72- if (array_key_exists ($ name , $ values ) || $ erase ) {
69+ if (( array_key_exists ($ name , $ values) && (! $ onlyDisabled || $ control -> isDisabled ()) ) || $ erase ) {
7370 $ control ->setValue ($ values [$ name ] ?? null );
7471 }
7572 } elseif ($ control instanceof self) {
7673 if (isset ($ values [$ name ]) || $ erase ) {
77- $ control ->setValues ($ values [$ name ] ?? [], $ erase );
74+ $ control ->setValues ($ values [$ name ] ?? [], $ erase, $ onlyDisabled );
7875 }
7976 }
8077 }
0 commit comments