Skip to content

Commit 2587044

Browse files
committed
Fixing '2.name' style fields when creating multiple record forms.
1 parent 96cc1b9 commit 2587044

File tree

2 files changed

+26
-9
lines changed

2 files changed

+26
-9
lines changed

lib/Cake/Test/Case/View/HelperTest.php

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,11 @@ public function testSetEntityScoped() {
276276
$expected = array('HelperTestPost', 'body');
277277
$this->assertEquals($expected, $this->View->entity());
278278

279+
280+
$this->Helper->setEntity('2.body');
281+
$expected = array('HelperTestPost', '2', 'body');
282+
$this->assertEquals($expected, $this->View->entity());
283+
279284
$this->Helper->setEntity('Something.else');
280285
$expected = array('Something', 'else');
281286
$this->assertEquals($expected, $this->View->entity());
@@ -548,9 +553,11 @@ public function testFieldSuffixForDate() {
548553
$expected = array('HelperTestPost');
549554
$this->assertEquals($expected, $this->View->entity());
550555

551-
$this->Helper->setEntity('date.month');
552-
$expected = array('HelperTestPost', 'date', 'month');
553-
$this->assertEquals($expected, $this->View->entity());
556+
foreach (array('year', 'month', 'day', 'hour', 'minute', 'meridian') as $d) {
557+
$this->Helper->setEntity('date.' . $d);
558+
$expected = array('HelperTestPost', 'date', $d);
559+
$this->assertEquals($expected, $this->View->entity());
560+
}
554561
}
555562

556563
/**

lib/Cake/View/Helper.php

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -416,6 +416,13 @@ public function setEntity($entity, $setScope = false) {
416416
) {
417417
$entity = $view->modelScope . '.' . $entity;
418418
}
419+
if (
420+
$count === 2 &&
421+
is_numeric($parts[0]) &&
422+
!is_numeric($parts[1])
423+
) {
424+
$entity = $view->modelScope . '.' . $entity;
425+
}
419426
$view->entityPath = $entity;
420427
return;
421428

@@ -567,11 +574,8 @@ public function setEntity($entity, $setScope = false) {
567574
* @return string
568575
*/
569576
public function model() {
570-
if (!empty($this->_View->association)) {
571-
return $this->_View->association;
572-
} else {
573-
return $this->_View->model;
574-
}
577+
$entity = $this->_View->entity();
578+
return isset($entity[0]) ? $entity[0] : null;
575579
}
576580

577581
/**
@@ -589,7 +593,13 @@ public function modelID() {
589593
* @return string
590594
*/
591595
public function field() {
592-
return $this->_View->field;
596+
$entity = $this->_View->entity();
597+
$count = count($entity);
598+
$last = $entity[$count - 1];
599+
if (in_array($last, $this->_fieldSuffixes)) {
600+
$last = isset($entity[$count - 2]) ? $entity[$count - 2] : null;
601+
}
602+
return $last;
593603
}
594604

595605
/**

0 commit comments

Comments
 (0)