Permalink
Browse files

Fixing '2.name' style fields when creating multiple record forms.

  • Loading branch information...
1 parent 96cc1b9 commit 25870441bc47b3eff5322498845573c3af98ca21 @markstory markstory committed Jun 25, 2011
Showing with 26 additions and 9 deletions.
  1. +10 −3 lib/Cake/Test/Case/View/HelperTest.php
  2. +16 −6 lib/Cake/View/Helper.php
@@ -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());
@@ -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());
+ }
}
/**
View
@@ -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;
@@ -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;
}
/**
@@ -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;
}
/**

0 comments on commit 2587044

Please sign in to comment.