From ae7f629eff76d83edd74e49b80c7925f949fdd8b Mon Sep 17 00:00:00 2001 From: euromark Date: Wed, 12 Dec 2012 11:23:41 +0100 Subject: [PATCH] correct target attribute for postLinks --- lib/Cake/Test/Case/View/Helper/FormHelperTest.php | 13 +++++++++++++ lib/Cake/View/Helper/FormHelper.php | 12 +++++++++--- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/lib/Cake/Test/Case/View/Helper/FormHelperTest.php b/lib/Cake/Test/Case/View/Helper/FormHelperTest.php index e8de415d1bf..3f3a84b5476 100644 --- a/lib/Cake/Test/Case/View/Helper/FormHelperTest.php +++ b/lib/Cake/Test/Case/View/Helper/FormHelperTest.php @@ -6317,6 +6317,19 @@ public function testPostLink() { $result = $this->Form->postLink('Delete', '/posts/delete', array('data' => array('id' => 1))); $this->assertContains('', $result); + + $result = $this->Form->postLink('Delete', '/posts/delete/1', array('target' => '_blank')); + $this->assertTags($result, array( + 'form' => array( + 'method' => 'post', 'target' => '_blank', 'action' => '/posts/delete/1', + 'name' => 'preg:/post_\w+/', 'id' => 'preg:/post_\w+/', 'style' => 'display:none;' + ), + 'input' => array('type' => 'hidden', 'name' => '_method', 'value' => 'POST'), + '/form', + 'a' => array('href' => '#', 'onclick' => 'preg:/document\.post_\w+\.submit\(\); event\.returnValue = false; return false;/'), + 'Delete', + '/a' + )); } /** diff --git a/lib/Cake/View/Helper/FormHelper.php b/lib/Cake/View/Helper/FormHelper.php index a00bef99747..517175769e8 100644 --- a/lib/Cake/View/Helper/FormHelper.php +++ b/lib/Cake/View/Helper/FormHelper.php @@ -1720,12 +1720,18 @@ public function postLink($title, $url = null, $options = array(), $confirmMessag $formName = uniqid('post_'); $formUrl = $this->url($url); - $out = $this->Html->useTag('form', $formUrl, array( + $formOptions = array( 'name' => $formName, 'id' => $formName, 'style' => 'display:none;', - 'method' => 'post' - )); + 'method' => 'post', + ); + if (isset($options['target'])) { + $formOptions['target'] = $options['target']; + unset($options['target']); + } + + $out = $this->Html->useTag('form', $formUrl, $formOptions); $out .= $this->Html->useTag('hidden', '_method', array( 'value' => $requestMethod ));