Returns whether the element at the given index is a property
public isProperty ( integer $index ) : boolean | ||
$index | integer | The index in the property path |
return | boolean | Whether the element at this index is a property |
public function testValidPropertyPath() { $path = new PropertyPath('reference.traversable[index].property'); $this->assertEquals('reference', $path->getCurrent()); $this->assertTrue($path->hasNext()); $this->assertTrue($path->isProperty()); $this->assertFalse($path->isIndex()); $path->next(); $this->assertEquals('traversable', $path->getCurrent()); $this->assertTrue($path->hasNext()); $this->assertTrue($path->isProperty()); $this->assertFalse($path->isIndex()); $path->next(); $this->assertEquals('index', $path->getCurrent()); $this->assertTrue($path->hasNext()); $this->assertFalse($path->isProperty()); $this->assertTrue($path->isIndex()); $path->next(); $this->assertEquals('property', $path->getCurrent()); $this->assertFalse($path->hasNext()); $this->assertTrue($path->isProperty()); $this->assertFalse($path->isIndex()); }
/** * {@inheritDoc} */ public function addError($message, PropertyPath $path = null, $type = null) { if ($path !== null) { if ($type === self::FIELD_ERROR && $path->hasNext()) { $path->next(); if ($path->isProperty() && $path->getCurrent() === 'fields') { $path->next(); } if ($this->has($path->getCurrent()) && !$this->get($path->getCurrent())->isHidden()) { $this->get($path->getCurrent())->addError($message, $path, $type); return; } } else { if ($type === self::DATA_ERROR) { $iterator = new RecursiveFieldsWithPropertyPathIterator($this); $iterator = new \RecursiveIteratorIterator($iterator); foreach ($iterator as $field) { if (null !== ($fieldPath = $field->getPropertyPath())) { $fieldPath->rewind(); if ($fieldPath->getCurrent() === $path->getCurrent() && !$field->isHidden()) { if ($path->hasNext()) { $path->next(); } $field->addError($message, $path, $type); return; } } } } } } parent::addError($message); }