本文整理汇总了PHP中Zend\View\Model\ModelInterface::hasChildren方法的典型用法代码示例。如果您正苦于以下问题:PHP ModelInterface::hasChildren方法的具体用法?PHP ModelInterface::hasChildren怎么用?PHP ModelInterface::hasChildren使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Zend\View\Model\ModelInterface
的用法示例。
在下文中一共展示了ModelInterface::hasChildren方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: addChildrenToView
/**
* @param ModelInterface $viewModel
* @param callable $addToViewFromModel
*/
protected function addChildrenToView(ModelInterface $viewModel, $addToViewFromModel)
{
if ($viewModel->hasChildren()) {
foreach ($viewModel->getChildren() as $child) {
$addToViewFromModel($child);
$this->addChildrenToView($child, $addToViewFromModel);
}
}
}
示例2: add
/**
* @inheritDoc
*/
public function add($blockId, ModelInterface $block)
{
$block->setOption('block_id', $blockId);
if ($block->hasChildren()) {
foreach ($block->getChildren() as $childBlock) {
$childBlockId = $this->determineAnonymousBlockId($childBlock);
$childBlock->setCaptureTo($blockId . LayoutInterface::CAPTURE_TO_DELIMITER . $childBlock->captureTo());
$this->add($childBlockId, $childBlock);
}
if ($block instanceof ClearableModelInterface) {
$block->clearChildren();
}
}
$this->blocks[$blockId] = $block;
return $this;
}
示例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;
}