Skip to content
Permalink
Browse files

Restore backwards compatibility with old 2.x in FormHelper.

Restore the behavior of the string 'action' option to its former glory.
While we've deprecated this it needs to continue working as it did
before.

Refs #8628
  • Loading branch information...
markstory committed May 2, 2016
1 parent ab79ab9 commit ade9d8a8115e26e968cf89d0821881c4b6a84572
Showing with 33 additions and 1 deletion.
  1. +31 −0 lib/Cake/Test/Case/View/Helper/FormHelperTest.php
  2. +2 −1 lib/Cake/View/Helper/FormHelper.php
@@ -8699,6 +8699,37 @@ public function testCreateNoUrl() {
$this->assertTags($result, $expected);
}
/**
* Test that the action key still uses the model as the implicit controller
* when the url option is undefined. While the action parameter is deprecated
* we need it to continue working for the duration of 2.x
*
* @return void
*/
public function testCreateUrlImpliedController()
{
$restore = error_reporting(E_ALL ^ E_USER_DEPRECATED);
$this->Form->request['controller'] = 'posts';
$result = $this->Form->create('Comment', array(
'action' => 'addComment',
'id' => 'addCommentForm',
'type' => 'POST'
));
$expected = array(
'form' => array(
'action' => '/comments/addComment',
'id' => 'addCommentForm',
'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);
error_reporting($restore);
}
/**
* Test the onsubmit option for create()
*
@@ -382,6 +382,7 @@ public function create($model = null, $options = array()) {
if (isset($options['action'])) {
trigger_error('Using key `action` is deprecated, use `url` directly instead.', E_USER_DEPRECATED);
}
if (is_array($options['url']) && isset($options['url']['action'])) {
$options['action'] = $options['url']['action'];
}
@@ -393,7 +394,7 @@ public function create($model = null, $options = array()) {
if ($options['action'] === null && $options['url'] === null) {
$options['action'] = $this->request->here(false);
} elseif (is_array($options['url'])) {
} elseif (empty($options['url']) || is_array($options['url'])) {
if (empty($options['url']['controller'])) {
if (!empty($model)) {
$options['url']['controller'] = Inflector::underscore(Inflector::pluralize($model));

0 comments on commit ade9d8a

Please sign in to comment.
You can’t perform that action at this time.