Во-первых, существует соглашение, что если вы сохраняете поля, сопоставленные с одной и той же моделью и хотите несколько вставок в дб, массив данных должен быть отформатирован, как указано Майком выше:
т.е. Модель. {П} .field
Вы можете ясно видеть, что они явно говорят, что когда вы сохраняете одно и то же имя поля в одной и той же модели несколько раз, это является соглашением , поскольку заголовок раздела руководства название "Соглашения об именах полей"
http://book.cakephp.org/view/1390/Automagic-Form-Elements#Field-naming-convention-1391
Вы не можете действительно назвать проблему ввода ошибкой CakePHP, если метод ввода не был написан, чтобы приспособить вас к использованию этого метода непреднамеренным образом. Метод явно разбивает переданную строку на "." символ и предполагает, что если вы используете строку с "." символ, который вы собираетесь отформатировать для сохранения массива данных, используя Model-> save или Model-> saveAll
Во-вторых, когда я тестирую ваш код на моем конце, он обнаруживает допустимую ошибку - он использует ожидаемые числовые индексы, но дублирует их ..
т.е. [0] [0] [Дескриптор] [заголовок], 1 [Дескриптор] [заголовок]
Когда я перемещаю указатель туда, где его ожидают * функции сохранения, синтаксический анализ выполняется идеально.
т.е. [Дескриптор] [0] [заголовок], Дескриптор [заголовок]
Итак, если вы хотите использовать помощников, вы должны использовать их так, как они предназначены для работы. Это не ошибка, если вы придумали свой собственный крайний случай, который изначально не должен был поддерживаться помощником.
Судя по вашему примеру - нет никаких причин не использовать saveAll в любом случае. Есть ли у вас какая-то причина, чтобы этого избежать; Кажется, это правильный способ сделать то, что вы просите.
** ИЗМЕНЕНО В ФИКС. БИЛЕТ http://cakephp.lighthouseapp.com/projects/42648/tickets/867 **
App это как app / views / app_view.php
<?php
App::import('View', 'View', false);
class AppView extends View {
/**
* Constructor
*
* @param object $controller
*/
function __construct(&$controller){
parent::__construct($controller);
}
/**
* Temporary View::entity fix for 1.2.5
* Returns the entity reference of the current context as an array of identity parts
*
* @return array An array containing the identity elements of an entity
* @access public
*/
function entity() {
$assoc = ($this->association) ? $this->association : $this->model;
if (!empty($this->entityPath)) {
$path = explode('.', $this->entityPath);
$count = count($path);
if (
($count == 1 && !empty($this->association)) ||
($count == 1 && $this->model != $this->entityPath) ||
($count == 2 && !empty($this->fieldSuffix)) ||
is_numeric($path[0]) && !empty($assoc)
) {
array_unshift($path, $assoc);
}
return Set::filter($path);
}
return array_values(Set::filter(
array($assoc, $this->modelId, $this->field, $this->fieldSuffix)
));
}
}
?>
Сообщите контроллеру использовать представление с его общедоступным свойством $ view.
<?php
class FooController extends Controller {
...
...
var $view = 'App';
...
...
}
?>