本文整理汇总了PHP中model::resolvePath方法的典型用法代码示例。如果您正苦于以下问题:PHP model::resolvePath方法的具体用法?PHP model::resolvePath怎么用?PHP model::resolvePath使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类model
的用法示例。
在下文中一共展示了model::resolvePath方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: __construct
public function __construct($model, $package, $path, $hooksClass)
{
if (is_file($model)) {
$this->prefix = $path;
$this->package = $package;
$this->xml = simplexml_load_file($model);
$this->database = (string) $this->xml["database"];
$this->label = (string) $this->xml["label"];
$this->name = (string) $this->xml["name"];
$this->showInMenu = (string) $this->xml["showInMenu"];
$description = $this->xml->xpath("/model:model/model:description");
$this->connect();
if (count($description) > 0) {
$this->description = (string) $description[0];
}
// Get a list of all the fields from the model into an array
$this->fields = array();
$field_xml = $this->xml->xpath("/model:model/model:fields/model:field");
//[@type!='displayReference']");
$this->explicitRelations = $this->xml->xpath("/model:model/model:explicitRelations/model:model");
foreach ($this->explicitRelations as $key => $explicitRelation) {
$this->explicitRelations = (string) $explicitRelation;
}
$fixedConditions = array();
foreach ($field_xml as $field) {
$description = $field->xpath("model:description");
$validatorsXML = $field->xpath("model:validator");
$validators = array();
$optionsXML = $field->xpath("model:options/model:option");
$options = array();
foreach ($validatorsXML as $validator) {
$validators[] = array("type" => (string) $validator["type"], "parameter" => (string) $validator);
}
foreach ($optionsXML as $option) {
//$options[] = array("value"=>(string)$option["value"],"label"=>(string)$option);
$options[(string) $option["value"]] = (string) $option;
}
$fieldInfo = array("name" => (string) $field["name"], "type" => (string) $field["type"], "label" => (string) $field["label"], "reference" => (string) $field["reference"], "referenceValue" => $this->datastore->concatenate(explode(",", (string) $field["referenceValue"])), "key" => (string) $field["key"], "description" => isset($description[0]) ? (string) $description[0] : "", "validators" => $validators, "options" => $options);
if ($fieldInfo["key"] == "primary") {
$this->keyField = $fieldInfo["name"];
}
if (isset($field["value"])) {
$fieldInfo["value"] = (string) $field["value"];
$fixedConditions[] = "{$this->database}.{$field["name"]} = '{$field["value"]}'";
$this->fixedValues[(string) $field["name"]] = $field["value"];
}
$this->fields[(string) $field["name"]] = $fieldInfo;
if ($field["type"] != "displayReference") {
$this->storedFields[(string) $field["name"]] = $fieldInfo;
}
}
$this->fixedConditions = implode(" AND ", $fixedConditions);
} else {
throw new Exception("Could not load XML defined model from {$model}!");
}
$references = $this->getXpathArray("/model:model/model:fields/model:field/@reference");
$fields = $this->getXpathArray("/model:model/model:fields/model:field[@reference!='']/@name");
$values = $this->getXpathArray("/model:model/model:fields/model:field[@reference!='']/@referenceValue");
$return = array();
for ($i = 0; $i < count($references); $i++) {
$reference = array();
$reference["referencing_field"] = $fields[$i];
$reference["reference"] = $references[$i];
$reference["referenced_value_field"] = $this->datastore->concatenate(explode(",", $values[$i]));
$fieldInfo = model::resolvePath($reference["reference"]);
$tempModel = model::load($fieldInfo["model"], $this->prefix);
$table = $tempModel->getDatabase();
$reference["table"] = (string) $table;
$reference["referenced_field"] = $fieldInfo["field"];
$return[] = $reference;
}
$this->referencedFields = $return;
$this->datastore->referencedFields = $this->referencedFields;
$this->datastore->explicitRelations = $this->explicitRelations;
$this->datastore->fields = $this->fields;
$this->datastore->database = $this->database;
$this->datastore->storedFields = $this->storedFields;
$this->datastore->keyField = $this->keyField;
$this->hooks = new $hooksClass();
$this->hooks->setModel($this);
//parent::__construct();
}
示例2: __construct
public function __construct($package, $name)
{
global $redirectedPackage;
parent::__construct();
$this->package = $package;
$this->name = $name;
$this->label = $this->label == "" ? Application::labelize($name) : $this->label;
$this->connect();
$this->datastore->database = $this->database;
$fields = $this->datastore->describe();
if ($fields == null) {
throw new Exception("Database table does not exists");
}
$fixedConditions = array();
foreach ($fields as $field) {
$name = $field["name"];
$this->fields[$name] = array("name" => $field["name"], "type" => isset($this->types[$name]) ? $this->types[$name] : $field["type"], "label" => Application::labelize($field["name"]), "validators" => array());
if (isset($field["key"])) {
$this->fields[$name]["key"] = $field["key"];
$this->keyField = $field["name"];
}
if (isset($this->options[$name])) {
$this->fields[$name]["type"] = "enum";
$this->fields[$name]["options"] = $this->options[$name];
}
if (isset($this->values[$name])) {
$this->fields[$name]["value"] = $this->values[$name];
$fixedConditions[] = "{$this->database}.{$name} = '{$this->values[$name]}'";
$this->fixedValues[$name] = $this->values[$name];
}
if (isset($this->validators[$name])) {
$this->fields[$name]["validators"] = $this->validators[$name];
}
if (isset($this->keys[$name])) {
// Reset any existing keys
foreach ($this->fields as $tempName => $tempField) {
if ($tempField["key"] == $this->keys[$name]) {
unset($this->fields[$tempName]['key']);
}
}
$this->fields[$name]["key"] = $this->keys[$name];
$this->fields[$name]["validators"] = array();
}
if (array_search($name, $this->unique) !== false) {
$field['unique'] = true;
}
if (array_search($name, $this->required) !== false) {
$field['required'] = true;
}
if (isset($this->references[$name])) {
$this->fields[$name]["type"] = "reference";
$this->fields[$name]["reference"] = $this->references[$name]["reference"];
$this->fields[$name]["referenceValue"] = $this->references[$name]["referenceValue"];
$fieldInfo = model::resolvePath($this->references[$name]["reference"]);
if ($package == $fieldInfo["model"]) {
$table = $this->database;
} else {
$tempModel = Model::load((substr($fieldInfo["model"], 0, 1) == "." ? $redirectedPackage : "") . $fieldInfo["model"], $this->prefix);
$table = $tempModel->getDatabase();
}
$this->referencedFields[] = array("referencing_field" => $name, "reference" => $this->references[$name]["reference"], "referenced_value_field" => $this->references[$name]["referenceValue"], "table" => (string) $table, "referenced_field" => $fieldInfo["field"]);
}
if ($field["required"]) {
$this->fields[$name]["validators"][] = array("type" => "required", "parameter" => "");
}
switch ($field["type"]) {
case "integer":
case "double":
$this->fields[$name]['validators'][] = array("type" => "numeric", "parameter" => "");
break;
case "date":
$this->fields[$name]['validators'][] = array("type" => "date", "parameter" => "");
break;
}
if ($field["unique"]) {
$this->fields[$name]["validators"][] = array("type" => "unique", "parameter" => "");
}
}
$this->fixedConditions = implode(" AND ", $fixedConditions);
$this->datastore->referencedFields = $this->referencedFields;
$this->datastore->explicitRelations = $this->explicitRelations;
$this->datastore->fields = $this->fields;
$this->datastore->database = $this->database;
$this->datastore->storedFields = $this->storedFields;
$this->datastore->keyField = $this->keyField;
}