diff --git a/lib/Cake/Test/Case/View/ViewTest.php b/lib/Cake/Test/Case/View/ViewTest.php index 67f68ca5791..dea04508730 100644 --- a/lib/Cake/Test/Case/View/ViewTest.php +++ b/lib/Cake/Test/Case/View/ViewTest.php @@ -677,7 +677,7 @@ public function testHelperCallbackTriggering() { $this->attributeEqualTo('_subject', $View) ) ); - + $View->Helpers->expects($this->at(4))->method('trigger') ->with( $this->logicalAnd( @@ -1246,6 +1246,20 @@ public function testPropertySetting() { $this->assertFalse(isset($this->View->pageTitle)); $this->View->pageTitle = 'test'; $this->assertTrue(isset($this->View->pageTitle)); + $this->assertTrue(!empty($this->View->pageTitle)); $this->assertEquals('test', $this->View->pageTitle); } + +/** + * Test that setting arbitrary properties still works. + * + * @return void + */ + public function testPropertySettingMagicGet() { + $this->assertFalse(isset($this->View->action)); + $this->View->request->params['action'] = 'login'; + $this->assertEquals('login', $this->View->action); + $this->assertTrue(isset($this->View->action)); + $this->assertTrue(!empty($this->View->action)); + } } diff --git a/lib/Cake/View/View.php b/lib/Cake/View/View.php index 61eca340bc3..df019bdaba7 100644 --- a/lib/Cake/View/View.php +++ b/lib/Cake/View/View.php @@ -762,7 +762,7 @@ public function __get($name) { case 'data': return $this->request->{$name}; case 'action': - return isset($this->request->params['action']) ? $this->request->params['action'] : ''; + return $this->request->params['action']; case 'params': return $this->request; case 'output': @@ -796,7 +796,14 @@ public function __set($name, $value) { * @return boolean */ public function __isset($name) { - return isset($this->{$name}); + if (isset($this->{$name})) { + return true; + } + $magicGet = array('base', 'here', 'webroot', 'data', 'action', 'params', 'output'); + if (in_array($name, $magicGet)) { + return $this->__get($name) !== null; + } + return false; } /**