2013-10-08 1 views
1

Ситуации

Я работаю на большой форме, которая была разделена на несколько вкладок, как для группы полого вида и сделать заполнение легче. Вкладки активируются с использованием JavaScript (jQuery), и форма представляется целиком (все вкладки сразу, даже если есть пустые поля).CakePHP не выполняет автоматическое заполнение поля (которое не имеет модели) после подачи

Я пытаюсь отправить поле hidden вместе с формой, чтобы сохранить текущую вкладку пользователя. Таким образом, когда форма отправляется, данные сохраняются, и пользователь возвращается на ту же самую вкладку, что и раньше. Это поле не привязано к какой-либо модели, так как это только помощник.

Проблемы + то, что есть я попытался

Поля правильно заселенно как вкладки переключателя пользователя, и он будет представлен вместе с формой. Это то, что я сделал:

<?php 
echo $this->Form->create('Briefing', array('enctype' => 'multipart/form-data')); 

    // This is my aux field, which is populated via jQuery as user switch tabs 
    echo $this->Form->hidden('tab-active', array('name' => 'tab-active', 'id' => 'tab-active')); 

    echo $this->Form->input('title'); 
    echo $this->Form->submit('Save', array('class' => 'btn btn-success')); 

echo $this->Form->end(); 
?> 

Давайте предположим, что пользователь представил форму, когда он был в «Tab # 4». Когда я debug($this->data); в моем BriefingsController, это то, что я получаю:

/app/Controller/BriefingsController.php (line 133) 
array(
    'tab-active' => 'tab-4', 
    'Briefing' => array(
     'title' => 'My test title' 
    ) 
) 

Так что мой контроллер получает данные формы для обоих tab-active и Briefing.title полей, но при загрузке формы после подачи, только поле Модель заполняется представленные данные и tab-active поставляется с пустым значением. CakePHP не автоматически заполняет значение для моего немодельного поля.

Любые мысли об этом? Является ли это поведением CakePHP по умолчанию или есть что-то, что я мог бы сделать, чтобы он работал (автозаполнение)? У меня нет проблем с jQuery (уже проверено его несколькими способами), Реальная проблема заключается в получении этого поля, заполненного после отправки формы. Буду признателен за любую оказанную помощь.

ответ

1

CakePHP заполняет формы данными модели формы. Поэтому, если вы создадите форму для создания «Брифинга», CakePHP будет рассматривать массив $ this-> data ['Briefing'] и заполнять входные данные, соответствующие полям, присутствующим в этом массиве. Так как ваше скрытое поле «tab-active» присутствует внутри формы формы «Брифинг», CakePHP ожидает, что ваша модель «Брифинг» будет иметь атрибут «tab-active».

Так что я думаю, что ваши $ this-> массив данных должен быть:

array(
    'Briefing' => array(
     'tab-active' => 'tab-4', 
     'title' => 'My test title' 
    ) 
) 
+0

На самом деле я, что разобрался .. То, что я хочу знать, если есть способ получить поле автоматически населена будь то модель. Может быть, нет никакого способа сделать это, и мне придется вернуться к тому, что вы предложили, включая его в модель, даже если это поле, которое не существует. – mathielo

+1

Я не знаю, как объявить ввод без модели в CakePHP, но если вы хотите сортировать свои данные, вы можете хотя бы ввести что-то вроде «Settings.tab-active», поместив активное значение tab в значение ' Настройки ", а не в" Брифинге "внутри $ this-> data – Chris

+0

Я не думал об этом. Я думаю, что это может быть хорошим решением, я попробую. – mathielo

Смежные вопросы