View/Helper/NavigationHelper.php
public function render($paths, $navAttrs = array(), $listAttrs = array()) {
		if (false !== $navAttrs) {
			$navAttrs = array_merge(array('tag' => 'nav'), $navAttrs);
			$navTag = $navAttrs['tag'];
			unset($navAttrs['tag']);
		}

		$listAttrs = array_merge(array('tag' => 'ul'), $listAttrs);
		$this->_tag = $listAttrs['tag'];
		unset($listAttrs['tag']);

		if (is_string($paths)) {
			$paths = array(array('path' => $paths));
		}

		$out = '';
		foreach ($paths as $k => $path) {
			if (is_string($path)) {
				$paths[$k] = compact('path');
			} else if (is_string($k)) {
				$attrs = (array) $path;
				$path = $k;
				if (!array_key_exists('navAttrs', $attrs) && !array_key_exists('listAttrs', $attrs)) {
					$attrs = array('navAttrs' => $attrs, 'listAttrs' => array());
				}
				$out .= $this->render($path, $attrs['navAttrs'], $attrs['listAttrs']);
				continue;
			}
			$paths[$k] = Hash::merge(array('attrs' => $listAttrs), $paths[$k]);
			$out .= $this->_render($paths[$k]);
		}

		if (empty($out)) {
			return;
		}

		if (false === $navAttrs) {
			return $out;
		}

		return $this->Html->useTag('tag', $navTag, $navAttrs, $out, $navTag);
	}
public function render($paths, $navAttrs = array(), $listAttrs = array()) {
		if (false !== $navAttrs) {
			$navAttrs = array_merge(array('tag' => 'nav'), $navAttrs);
			$navTag = $navAttrs['tag'];
			unset($navAttrs['tag']);
		}

		$listAttrs = array_merge(array('tag' => 'ul'), $listAttrs);
		$this->_tag = $listAttrs['tag'];
		unset($listAttrs['tag']);

		if (is_string($paths)) {
			$paths = array(array('path' => $paths));
		}

		$out = '';
		foreach ($paths as $k => $path) {
			if (is_string($path)) {
				$paths[$k] = compact('path');
			} else if (is_string($k)) {
				$attrs = (array) $path;
				$path = $k;
				if (!array_key_exists('navAttrs', $attrs) && !array_key_exists('listAttrs', $attrs)) {
					$attrs = array('navAttrs' => $attrs, 'listAttrs' => array());
				}
				$out .= $this->render($path, $attrs['navAttrs'], $attrs['listAttrs']);
				continue;
			}
			$paths[$k] = Hash::merge(array('attrs' => $listAttrs), $paths[$k]);
			$out .= $this->_render($paths[$k]);
		}

		if (empty($out)) {
			return;
		}

		if (false === $navAttrs) {
			return $out;
		}

		return $this->Html->useTag('tag', $navTag, $navAttrs, $out, $navTag);
	}
public function render ( $ paths , $ navAttrs = array ( ) , $ listAttrs = array ( ) ) { if ( false !== $ navAttrs ) { $ navAttrs = array_merge ( array ( 'tag' => 'nav' ) , $ navAttrs ) ; $ navTag = $ navAttrs [ 'tag' ] ; unset ( $ navAttrs [ 'tag' ] ) ; } $ listAttrs = array_merge ( array ( 'tag' => 'ul' ) , $ listAttrs ) ; $ this -> _tag = $ listAttrs [ 'tag' ] ; unset ( $ listAttrs [ 'tag' ] ) ; if ( is_string ( $ paths ) ) { $ paths = array ( array ( 'path' => $ paths ) ) ; } $ out = '' ; foreach ( $ paths as $ k => $ path ) { if ( is_string ( $ path ) ) { $ paths [ $ k ] = compact ( 'path' ) ; } else if ( is_string ( $ k ) ) { $ attrs = ( array ) $ path ; $ path = $ k ; if ( ! array_key_exists ( 'navAttrs' , $ attrs ) && ! array_key_exists ( 'listAttrs' , $ attrs ) ) { $ attrs = array ( 'navAttrs' => $ attrs , 'listAttrs' => array ( ) ) ; } $ out .= $ this -> render ( $ path , $ attrs [ 'navAttrs' ] , $ attrs [ 'listAttrs' ] ) ; continue ; } $ paths [ $ k ] = Hash :: merge ( array ( 'attrs' => $ listAttrs ) , $ paths [ $ k ] ) ; $ out .= $ this -> _render ( $ paths [ $ k ] ) ; } if ( empty ( $ out ) ) { return ; } if ( false === $ navAttrs ) { return $ out ; } return $ this -> Html -> useTag ( 'tag' , $ navTag , $ navAttrs , $ out , $ navTag ) ; }
Render navigation.

@param string $path Optional. The navigation's item(s) `Hash` path.
@param array $navAttrs Optional. Navigation's HTML attributes.
@param array $listAttrs Optional. List's HTML attributes.
@return string
Render navigation .