$now = array(); } Each::forx($ext, function (&$n, $key) use(&$now) { if (@$now[$key]) { return; } $now[$key] = array('external' => &$n); }); return $now; }); External::add('crumb', function (&$now, &$ext, &$layer, &$external, $i) { //проверка external в onchange Crumb::set($layer, 'crumb', $ext); return $layer[$i]; }); Run::runAddKeys('childs'); Run::runAddList('child'); }); Event::handler('layer.oninit', function (&$layer) { //это из-за child// всё что после child начинает плыть. по этому надо crumb каждый раз определять, брать от родителя. //crumb if (!isset($layer['dyn'])) { //Делается только один раз Crumb::set($layer, 'crumb', $layer['crumb']); } }, 'crumb:external'); Event::handler('layer.oninit', function (&$layer) { //crumb if (empty($layer['parent'])) { return; }