Component->lookup preskočí nadradený komponent v prvej úrovni
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- viktorc
- Člen | 21
Zdravím,
všimol som si, že Nette\ComponentModel\Component->lookup vždy preskočí parenta v prvej úrovni:
public function lookup($type, $need = TRUE)
{
if (!isset($this->monitors[$type])) { // not monitored or not processed yet
$obj = $this->parent;
//...
while ($obj !== NULL) {
$parent = $obj->getParent();
if ($type ? $obj instanceof $type : $parent === NULL) {
break;
}
//...
Je to tak v 2.3 aj 2.4. Vo verzii, z ktorej upgradujem (0.9) to podľa mňa fungovalo správne:
public function lookup($type, $need = TRUE)
{
//...
if (!isset($this->monitors[$type])) { // not monitored or not processed yet
$obj = $this->parent;
//...
while ($obj !== NULL) {
if ($obj instanceof $type) break;
//...
$obj = $obj->getParent();
if ($obj === $this) $obj = NULL; // prevent cycling
}
//...
Ak to nie je bug, aký je v tom zámer?
Ďakujem
viktorc
- David Matějka
- Moderator | 6445
nepovedlo se mi to nasimulovat. a kod dle me vypada v poradku. muzes ukazat priklad, ktery nefunguje?