Skip to content

Commit

Permalink
Fixing '2.name' style fields when creating multiple record forms.
Browse files Browse the repository at this point in the history
  • Loading branch information
markstory committed Jun 25, 2011
1 parent 96cc1b9 commit 2587044
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 9 deletions.
13 changes: 10 additions & 3 deletions lib/Cake/Test/Case/View/HelperTest.php
Expand Up @@ -276,6 +276,11 @@ public function testSetEntityScoped() {
$expected = array('HelperTestPost', 'body');
$this->assertEquals($expected, $this->View->entity());


$this->Helper->setEntity('2.body');
$expected = array('HelperTestPost', '2', 'body');
$this->assertEquals($expected, $this->View->entity());

$this->Helper->setEntity('Something.else');
$expected = array('Something', 'else');
$this->assertEquals($expected, $this->View->entity());
Expand Down Expand Up @@ -548,9 +553,11 @@ public function testFieldSuffixForDate() {
$expected = array('HelperTestPost');
$this->assertEquals($expected, $this->View->entity());

$this->Helper->setEntity('date.month');
$expected = array('HelperTestPost', 'date', 'month');
$this->assertEquals($expected, $this->View->entity());
foreach (array('year', 'month', 'day', 'hour', 'minute', 'meridian') as $d) {
$this->Helper->setEntity('date.' . $d);
$expected = array('HelperTestPost', 'date', $d);
$this->assertEquals($expected, $this->View->entity());
}
}

/**
Expand Down
22 changes: 16 additions & 6 deletions lib/Cake/View/Helper.php
Expand Up @@ -416,6 +416,13 @@ public function setEntity($entity, $setScope = false) {
) {
$entity = $view->modelScope . '.' . $entity;
}
if (
$count === 2 &&
is_numeric($parts[0]) &&
!is_numeric($parts[1])
) {
$entity = $view->modelScope . '.' . $entity;
}
$view->entityPath = $entity;
return;

Expand Down Expand Up @@ -567,11 +574,8 @@ public function setEntity($entity, $setScope = false) {
* @return string
*/
public function model() {
if (!empty($this->_View->association)) {
return $this->_View->association;
} else {
return $this->_View->model;
}
$entity = $this->_View->entity();
return isset($entity[0]) ? $entity[0] : null;
}

/**
Expand All @@ -589,7 +593,13 @@ public function modelID() {
* @return string
*/
public function field() {
return $this->_View->field;
$entity = $this->_View->entity();
$count = count($entity);
$last = $entity[$count - 1];
if (in_array($last, $this->_fieldSuffixes)) {
$last = isset($entity[$count - 2]) ? $entity[$count - 2] : null;
}
return $last;
}

/**
Expand Down

0 comments on commit 2587044

Please sign in to comment.