Skip to content

Commit 28cb505

Browse files
authored
Merge f09f2a4 into 3f2121b
2 parents 3f2121b + f09f2a4 commit 28cb505

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

src/ORM/Model.php

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,17 +124,24 @@ protected function registerNamespace()
124124
* т.к. есть проблемы с неймспейсами xmlns
125125
*
126126
* Для каждого элемента необходимо указывать наймспейс "c", например:
127-
* //c:Свойство/c:ВариантыЗначений/c:Справочник[c:ИдЗначения = '{$id}']
128-
*
127+
* //c:Свойство/c:ВариантыЗначений/c:Справочник[c:ИдЗначения = ':параметр']
128+
*
129129
* @param string $path
130+
* @param array $args - Аргументы задаём в бинд стиле ['параметр'=>'значение'] без двоеточия
130131
* @return \SimpleXMLElement[]
131132
*/
132-
public function xpath($path)
133+
public function xpath($path, $args=[])
133134
{
135+
ActiveQuery::
134136
$this->registerNamespace();
135137
if (!$this->namespaceRegistered) {
136138
$path = str_replace('c:', '', $path);
137139
}
140+
if (!empty($args) and is_array($args)) {
141+
foreach ($args as $ka=>$kv) {
142+
$path = str_replace(':'.$ka, (strstr($kv,"'")?("concat('" .str_replace("'", "',\"'\",'",$kv) . "')"): "'" . $kv . "'") , $path);
143+
}
144+
}
138145
return $this->xml->xpath($path);
139146
}
140147
}

0 commit comments

Comments
 (0)