2013-05-22 2 views
0

У меня есть элемент формы. Когда я нажму кнопку «Отправить», он добавит данные в таблицу. это хорошо работает. Но мне нужно добавить данные в таблицу только в первый раз, после того как каждая информация будет обновлена. Как мы можем это сделать?Как выполнить добавление действия в форме только один раз, после обновления записи каждый раз

function add(){ 
    if(!empty($this->data)){ 
    $this->loadModel('Defineroute'); 
    $this->Defineroute->create(); 
    $this->Defineroute->save($route_data); //route_data is data from the form 
    } 
} 

У меня есть еще один сомнения, у меня есть view.ctp в контроллере У меня есть функция просмотра() для этого. Но в view.ctp я использую один элемент формы.

Как мы можем написать функцию для этого элемента в контроллере? Когда я пытаюсь написать функцию, она показывает ошибку отсутствующий вид ..

ответ

1

CakePHP определяет, будет ли он должен обновление существующей записи или вставки новый рекорд на основании наличия первичного ключа («ид») внутри данных, которые вы сохраняете;

Это вставить новый рекорд:

$route_data = array(
    'Defineroute' => array(
     'name' => 'I am a new record' 
    ) 
); 

$this->Defineroute->save($route_data); 

И это будет обновление существующей записи;

$route_data = array(
    'Defineroute' => array(
     'id' => 123, 
     'name' => 'I will update record with ID 123' 
    ) 
); 

$this->Defineroute->save($route_data); 

Чтобы учесть это в одной форме, создать форму внутри вида/элемента и только добавить вход для id поле, если вы редактируете существующую запись

Также см Saving your data

+0

ты прав. но я как имплицировать это? – SibinF

+0

@SibinF, что действительно зависит от вашей ситуации; Где вы * извлекаете * существующие данные, если хотите отредактировать? Как вы решаете, хотите ли вы * редактировать * или * вставить * запись? Как вы выбираете «правильную запись для редактирования? – thaJeztah

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