mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 03:18:26 +00:00
Load helpers at View construction.
Loading helpers earlier in View's lifecycle allows for the removal of many duplicated code segments and a now useless property. It slightly modifies how View behaves in a test case, but that issue is easily remedied by calling loadHelpers() a second time. This primarily fixes issues where helpers may not be loaded in View subclasses if they override any of View's methods. This is particularly problematic when aliased helpers are involved. Refs #4030
This commit is contained in:
parent
e7672b99c0
commit
b8320fdbb7
4 changed files with 5 additions and 20 deletions
|
@ -334,6 +334,8 @@ object(View) {
|
|||
response => object(CakeResponse) {}
|
||||
elementCache => 'default'
|
||||
elementCacheSettings => array()
|
||||
Html => object(HtmlHelper) {}
|
||||
Form => object(FormHelper) {}
|
||||
int => (int) 2
|
||||
float => (float) 1.333
|
||||
|
||||
|
@ -358,7 +360,6 @@ TEXT;
|
|||
)
|
||||
[protected] _scripts => array()
|
||||
[protected] _paths => array()
|
||||
[protected] _helpersLoaded => false
|
||||
[protected] _parents => array()
|
||||
[protected] _current => null
|
||||
[protected] _currentType => ''
|
||||
|
|
|
@ -975,7 +975,7 @@ class HelperTest extends CakeTestCase {
|
|||
$Helper->OtherHelper;
|
||||
|
||||
$result = $this->View->Helpers->enabled();
|
||||
$expected = array();
|
||||
$expected = array('Html');
|
||||
$this->assertEquals($expected, $result, 'Helper helpers were attached to the collection.');
|
||||
}
|
||||
|
||||
|
|
|
@ -146,8 +146,8 @@ class JsonViewTest extends CakeTestCase {
|
|||
)
|
||||
);
|
||||
$Controller->set('user', $data);
|
||||
$Controller->helpers = array('Paginator');
|
||||
$View = new JsonView($Controller);
|
||||
$View->helpers = array('Paginator');
|
||||
$output = $View->render('index');
|
||||
|
||||
$expected = array('user' => 'fake', 'list' => array('item1', 'item2'), 'paging' => array('page' => 2));
|
||||
|
|
|
@ -253,13 +253,6 @@ class View extends Object {
|
|||
*/
|
||||
protected $_paths = array();
|
||||
|
||||
/**
|
||||
* Indicate that helpers have been loaded.
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
protected $_helpersLoaded = false;
|
||||
|
||||
/**
|
||||
* The names of views and their parents used with View::extend();
|
||||
*
|
||||
|
@ -347,6 +340,7 @@ class View extends Object {
|
|||
}
|
||||
$this->Helpers = new HelperCollection($this);
|
||||
$this->Blocks = new ViewBlock();
|
||||
$this->loadHelpers();
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
|
@ -460,9 +454,6 @@ class View extends Object {
|
|||
if ($this->hasRendered) {
|
||||
return true;
|
||||
}
|
||||
if (!$this->_helpersLoaded) {
|
||||
$this->loadHelpers();
|
||||
}
|
||||
$this->Blocks->set('content', '');
|
||||
|
||||
if ($view !== false && $viewFileName = $this->_getViewFileName($view)) {
|
||||
|
@ -511,9 +502,6 @@ class View extends Object {
|
|||
return $this->Blocks->get('content');
|
||||
}
|
||||
|
||||
if (!$this->_helpersLoaded) {
|
||||
$this->loadHelpers();
|
||||
}
|
||||
if (empty($content)) {
|
||||
$content = $this->Blocks->get('content');
|
||||
}
|
||||
|
@ -881,7 +869,6 @@ class View extends Object {
|
|||
list(, $class) = pluginSplit($properties['class']);
|
||||
$this->{$class} = $this->Helpers->load($properties['class'], $properties['settings']);
|
||||
}
|
||||
$this->_helpersLoaded = true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1194,9 +1181,6 @@ class View extends Object {
|
|||
* @return string
|
||||
*/
|
||||
protected function _renderElement($file, $data, $options) {
|
||||
if (!$this->_helpersLoaded) {
|
||||
$this->loadHelpers();
|
||||
}
|
||||
if ($options['callbacks']) {
|
||||
$this->getEventManager()->dispatch(new CakeEvent('View.beforeRender', $this, array($file)));
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue