Adding parameters to helper callbacks, these allow helpers to introspect more on the view/layout being rendered.

Updating tests.
This commit is contained in:
mark_story 2010-11-04 22:53:00 -04:00
parent 882efa883e
commit 1b19ad48b4
4 changed files with 17 additions and 11 deletions

View file

@ -801,9 +801,10 @@ class Helper extends Object {
* *
* Overridden in subclasses. * Overridden in subclasses.
* *
* @param string $viewFile The view file that is going to be rendered
* @return void * @return void
*/ */
public function beforeRender() { public function beforeRender($viewFile) {
} }
/** /**
@ -812,9 +813,11 @@ class Helper extends Object {
* *
* Overridden in subclasses. * Overridden in subclasses.
* *
* @param string $viewFile The view file that was rendered.
* @param string $content The content of the rendered view.
* @return void * @return void
*/ */
public function afterRender() { public function afterRender($viewFile, $content) {
} }
/** /**
@ -822,9 +825,10 @@ class Helper extends Object {
* *
* Overridden in subclasses. * Overridden in subclasses.
* *
* @param string $layoutFile The layout about to be rendered.
* @return void * @return void
*/ */
public function beforeLayout() { public function beforeLayout($layoutFile) {
} }
/** /**
@ -832,9 +836,11 @@ class Helper extends Object {
* *
* Overridden in subclasses. * Overridden in subclasses.
* *
* @param string $layoutFile The layout file that was rendered.
* @param string $content The content of the rendered layout.
* @return void * @return void
*/ */
public function afterLayout() { public function afterLayout($layoutFile, $content) {
} }
/** /**

View file

@ -110,10 +110,10 @@ class PaginatorHelper extends AppHelper {
* *
* @return void * @return void
*/ */
public function beforeRender() { public function beforeRender($viewFile) {
$this->options['url'] = array_merge($this->request->params['pass'], $this->request->params['named']); $this->options['url'] = array_merge($this->request->params['pass'], $this->request->params['named']);
parent::beforeRender(); parent::beforeRender($viewFile);
} }
/** /**

View file

@ -391,9 +391,9 @@ class View extends Object {
} }
if ($action !== false && $viewFileName = $this->_getViewFileName($action)) { if ($action !== false && $viewFileName = $this->_getViewFileName($action)) {
$this->Helpers->trigger('beforeRender', array($this, $viewFileName)); $this->Helpers->trigger('beforeRender', array($viewFileName));
$out = $this->_render($viewFileName); $out = $this->_render($viewFileName);
$this->Helpers->trigger('afterRender', array($this, $viewFileName, $out)); $this->Helpers->trigger('afterRender', array($viewFileName, $out));
} }
if ($layout === null) { if ($layout === null) {
@ -437,7 +437,7 @@ class View extends Object {
if (!$this->_helpersLoaded) { if (!$this->_helpersLoaded) {
$this->loadHelpers(); $this->loadHelpers();
} }
$this->Helpers->trigger('beforeLayout', array(&$this, $layoutFileName)); $this->Helpers->trigger('beforeLayout', array($layoutFileName));
$this->viewVars = array_merge($this->viewVars, array( $this->viewVars = array_merge($this->viewVars, array(
'content_for_layout' => $content_for_layout, 'content_for_layout' => $content_for_layout,
@ -454,7 +454,7 @@ class View extends Object {
throw new RuntimeException(sprintf(__("Error in layout %s, got no content."), $layoutFileName)); throw new RuntimeException(sprintf(__("Error in layout %s, got no content."), $layoutFileName));
} }
$this->Helpers->trigger('afterLayout', array(&$this, $layoutFileName, $this->output)); $this->Helpers->trigger('afterLayout', array($layoutFileName, $this->output));
return $this->output; return $this->output;
} }

View file

@ -657,7 +657,7 @@ class PaginatorHelperTest extends CakeTestCase {
$this->Paginator->request->params['pass'] = array(2); $this->Paginator->request->params['pass'] = array(2);
$this->Paginator->request->params['named'] = array('foo' => 'bar'); $this->Paginator->request->params['named'] = array('foo' => 'bar');
$this->Paginator->beforeRender(); $this->Paginator->beforeRender('posts/index');
$result = $this->Paginator->sort('title'); $result = $this->Paginator->sort('title');
$expected = array( $expected = array(