本文整理汇总了PHP中Zend\View\Model\ModelInterface::getVariables方法的典型用法代码示例。如果您正苦于以下问题:PHP ModelInterface::getVariables方法的具体用法?PHP ModelInterface::getVariables怎么用?PHP ModelInterface::getVariables使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Zend\View\Model\ModelInterface
的用法示例。
在下文中一共展示了ModelInterface::getVariables方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: render
/**
* Renders values as JSON
*
* @todo Determine what use case exists for accepting only $nameOrModel
* @param string|Model $nameOrModel The script/resource process, or a view model
* @param null|array|\ArrayAccess $values Values to use during rendering
* @throws Exception\InvalidArgumentException
* @return string The script output.
*/
public function render($nameOrModel, $values = null)
{
if ($nameOrModel instanceof Model) {
// Use case 1: View Model provided
// Non-FeedModel: cast to FeedModel
if (!$nameOrModel instanceof FeedModel) {
$vars = $nameOrModel->getVariables();
$options = $nameOrModel->getOptions();
$type = $this->getFeedType();
if (isset($options['feed_type'])) {
$type = $options['feed_type'];
} else {
$this->setFeedType($type);
}
$nameOrModel = new FeedModel($vars, array('feed_type' => $type));
}
} elseif (is_string($nameOrModel)) {
// Use case 2: string $nameOrModel + array|Traversable|Feed $values
$nameOrModel = new FeedModel($values, (array) $nameOrModel);
} else {
// Use case 3: failure
throw new Exception\InvalidArgumentException(sprintf('%s expects a ViewModel or a string feed type as the first argument; received "%s"', __METHOD__, is_object($nameOrModel) ? get_class($nameOrModel) : gettype($nameOrModel)));
}
// Get feed and type
$feed = $nameOrModel->getFeed();
$type = $nameOrModel->getFeedType();
if (!$type) {
$type = $this->getFeedType();
} else {
$this->setFeedType($type);
}
// Render feed
return $feed->export($type);
}
示例2: render
/**
* Processes a view script and returns the output.
*
* @param string|ModelInterface $nameOrModel The script/resource process, or a view model
* @param null|array|\ArrayAccess $values Values to use during rendering
* @return string The script output.
* @throws \LogicException
*/
public function render($nameOrModel, $values = null)
{
$name = $nameOrModel;
if ($nameOrModel instanceof ModelInterface) {
$name = $this->resolver->resolve($nameOrModel->getTemplate(), $this);
$values = (array) $nameOrModel->getVariables();
}
if (array_key_exists('helper', $values)) {
throw new \LogicException('Variable $helper is reserved for Zend helpers and can\'t be passed to view.');
}
$values['helper'] = $this->helpers;
return $this->engine->renderToString($name, $values);
}
示例3: recurseModel
/**
* Retrieve values from a model and recurse its children to build a data structure
*
* @param Model $model
* @param bool $mergeWithVariables Whether or not to merge children with
* the variables of the $model
* @return array
*/
protected function recurseModel(Model $model, $mergeWithVariables = true)
{
$values = [];
if ($mergeWithVariables) {
$values = $model->getVariables();
}
if ($values instanceof Traversable) {
$values = ArrayUtils::iteratorToArray($values);
}
if (!$model->hasChildren()) {
return $values;
}
$mergeChildren = $this->mergeUnnamedChildren();
foreach ($model as $child) {
$captureTo = $child->captureTo();
if (!$captureTo && !$mergeChildren) {
// We don't want to do anything with this child
continue;
}
$childValues = $this->recurseModel($child);
if ($captureTo) {
// Capturing to a specific key
// TODO please complete if append is true. must change old
// value to array and append to array?
$values[$captureTo] = $childValues;
} elseif ($mergeChildren) {
// Merging values with parent
$values = array_replace_recursive($values, $childValues);
}
}
return $values;
}
示例4: render
/**
* Recursively processes all ViewModels and returns output.
*
* @param string|ModelInterface $model A ViewModel instance.
* @param null|array|\Traversable $values Values to use when rendering. If none
* provided, uses those in the composed
* variables container.
* @return string Console output.
*/
public function render($model, $values = null)
{
if (!$model instanceof ModelInterface) {
return '';
}
$result = '';
$options = $model->getOptions();
foreach ($options as $setting => $value) {
$method = 'set' . $setting;
if (method_exists($this, $method)) {
$this->{$method}($value);
}
unset($method, $setting, $value);
}
unset($options);
$values = $model->getVariables();
if (isset($values['result'])) {
// filter and append the result
$result .= $this->getFilterChain()->filter($values['result']);
}
if ($model->hasChildren()) {
// recursively render all children
foreach ($model->getChildren() as $child) {
$result .= $this->render($child, $values);
}
}
return $result;
}
示例5: render
/**
* Recursively processes all ViewModels and returns output.
*
* @param string|ModelInterface $model A ViewModel instance.
* @param null|array|\Traversable $values Values to use when rendering. If
* none provided, uses those in the composed variables container.
* @return string Console output.
*/
public function render($model, $values = null)
{
$result = '';
if (!$model instanceof ModelInterface) {
// View model is required by this renderer
return $result;
}
// If option keys match setters, pass values to those methods.
foreach ($model->getOptions() as $setting => $value) {
$method = 'set' . $setting;
if (method_exists($this, $method)) {
$this->{$method}($value);
}
}
// Render children first
if ($model->hasChildren()) {
// recursively render all children
foreach ($model->getChildren() as $child) {
$result .= $this->render($child, $values);
}
}
// Render the result, if present.
$values = $model->getVariables();
if (isset($values['result']) && !isset($this->filterChain)) {
// append the result verbatim
$result .= $values['result'];
}
if (isset($values['result']) && isset($this->filterChain)) {
// filter and append the result
$result .= $this->getFilterChain()->filter($values['result']);
}
return $result;
}
示例6: mergeViewModel
/**
* Merge global/template parameters with provided view model.
*
* @param string $name Template name.
* @param ModelInterface $model
* @return ModelInterface
*/
private function mergeViewModel($name, ModelInterface $model)
{
$params = $this->mergeParams($name, $model->getVariables());
$model->setVariables($params);
$model->setTemplate($name);
return $model;
}
示例7: render
/**
* @param string|ModelInterface $nameOrModel The script/resource process, or a view model
* @param null|array|\ArrayAccess $values Values to use during rendering
* @return string The script output.
*/
public function render($nameOrModel, $values = null)
{
$result = $this->negotiator->negotiate($nameOrModel->getVariables(), $nameOrModel->getAccept());
return $result;
}