diff --git a/lib/Cake/Network/CakeRequest.php b/lib/Cake/Network/CakeRequest.php index 59b2ee2a915..d84b369bfd2 100644 --- a/lib/Cake/Network/CakeRequest.php +++ b/lib/Cake/Network/CakeRequest.php @@ -805,6 +805,20 @@ public function data($name) { return Hash::get($this->data, $name); } +/** + * Safely access the values in $this->params. + * + * @param string $name The name of the parameter to get. + * @return mixed The value of the provided parameter. Will + * return false if the parameter doesn't exist or is falsey. + */ + public function param($name) { + if (!isset($this->params[$name])) { + return false; + } + return $this->params[$name]; + } + /** * Read data from `php://input`. Useful when interacting with XML or JSON * request body content. diff --git a/lib/Cake/Test/Case/Network/CakeRequestTest.php b/lib/Cake/Test/Case/Network/CakeRequestTest.php index b851f0bf813..2f7d97a747b 100644 --- a/lib/Cake/Test/Case/Network/CakeRequestTest.php +++ b/lib/Cake/Test/Case/Network/CakeRequestTest.php @@ -1768,6 +1768,26 @@ public function testQueryWithArray() { $this->assertNull($result); } +/** + * Test using param() + * + * @return void + */ + public function testReadingParams() { + $request = new CakeRequest(); + $request->addParams(array( + 'controller' => 'posts', + 'admin' => true, + 'truthy' => 1, + 'zero' => '0', + )); + $this->assertFalse($request->param('not_set')); + $this->assertTrue($request->param('admin')); + $this->assertEquals(1, $request->param('truthy')); + $this->assertEquals('posts', $request->param('controller')); + $this->assertEquals('0', $request->param('zero')); + } + /** * test the data() method reading *