Skip to content

Commit

Permalink
Allow 3.x backport of url=>false in 2.x
Browse files Browse the repository at this point in the history
  • Loading branch information
Mark Scherer committed Jan 7, 2016
1 parent 6fbc029 commit b1f1003
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 3 deletions.
20 changes: 20 additions & 0 deletions lib/Cake/Test/Case/View/Helper/FormHelperTest.php
Expand Up @@ -8608,6 +8608,26 @@ public function testCreate() {
}

/**
* Test create() with no URL (no "action" attribute for <form> tag)
*
* @return void
*/
public function testCreateNoUrl() {
$result = $this->Form->create(false, array('url' => false));
$expected = array(
'form' => array(
'id' => 'addForm',
'method' => 'post',
'accept-charset' => strtolower(Configure::read('App.encoding'))
),
'div' => array('style' => 'display:none;'),
'input' => array('type' => 'hidden', 'name' => '_method', 'value' => 'POST'),
'/div'
);
$this->assertTags($result, $expected);
}

/**
* Test the onsubmit option for create()
*
* @return void
Expand Down
15 changes: 12 additions & 3 deletions lib/Cake/View/Helper/FormHelper.php
Expand Up @@ -393,7 +393,7 @@ public function create($model = null, $options = array()) {

if ($options['action'] === null && $options['url'] === null) {
$options['action'] = $this->request->here(false);
} elseif (empty($options['url']) || is_array($options['url'])) {
} elseif (is_array($options['url'])) {
if (empty($options['url']['controller'])) {
if (!empty($model)) {
$options['url']['controller'] = Inflector::underscore(Inflector::pluralize($model));
Expand Down Expand Up @@ -421,7 +421,6 @@ public function create($model = null, $options = array()) {
} elseif (is_string($options['url'])) {
$options['action'] = $options['url'];
}
unset($options['url']);

switch (strtolower($options['type'])) {
case 'get':
Expand All @@ -442,7 +441,13 @@ public function create($model = null, $options = array()) {
}
$this->requestType = strtolower($options['type']);

$action = $this->url($options['action']);
if ($options['action'] === false || $options['url'] === false) {
$action = null;
} else {
$action = $this->url($options['action']);
}
unset($options['url']);

$this->_lastAction($options['action']);
unset($options['type'], $options['action']);

Expand Down Expand Up @@ -475,6 +480,10 @@ public function create($model = null, $options = array()) {
$this->_introspectModel($model, 'fields');
}

if ($action === null) {
return $this->Html->useTag('formwithoutaction', $htmlAttributes) . $append;
}

return $this->Html->useTag('form', $action, $htmlAttributes) . $append;
}

Expand Down
1 change: 1 addition & 0 deletions lib/Cake/View/Helper/HtmlHelper.php
Expand Up @@ -49,6 +49,7 @@ class HtmlHelper extends AppHelper {
'link' => '<a href="%s"%s>%s</a>',
'mailto' => '<a href="mailto:%s"%s>%s</a>',
'form' => '<form action="%s"%s>',
'formwithoutaction' => '<form%s>',
'formend' => '</form>',
'input' => '<input name="%s"%s/>',
'textarea' => '<textarea name="%s"%s>%s</textarea>',
Expand Down

0 comments on commit b1f1003

Please sign in to comment.