2015-04-10 5 views
0

В настоящее время я работаю над проектом с помощью CakePHP 3.Обновления формы CakePHP 3

У меня есть форма для добавления клиентов, которые работают с помощью этого в моем контроллере:

public function add(){ 

     $clients = $this->Clients->newEntity(); 
     if($this->request->is('post')){ 
      $clients = $this->Clients->patchEntity($clients, $this->request->data); 
      if($this->Clients->save($clients)){ 
       $this->Flash->success(__('Client has been created.')); 
       return $this->redirect(['controller'=>'Clients','action'=>'index']); 
      } 
      $this->Flash->error(__('Client hasnt been created.')); 
     } 
     $this->set('clients',$clients); 

    } 

Тогда я хочу, чтобы иметь возможность изменить одного из моих клиентов. У меня есть таблица клиентов, и когда я нажимаю на них, у меня есть кнопка изменения (jQuery). Тогда я нахожусь на моей странице изменения. Я провел некоторое испытание с документом из торта, но, похоже, я не понимаю, как это работает и какие инструменты я должен использовать.

На данный момент, у меня есть это на мой контроллер:

public function modify($id = null){ 
      if(empty($id)){ 
       throw new NotFoundException; 
      } 
      $clients = $this->Clients->get($id); 
      /* there should be the modify code */ 
      $this->set('clients', $clients); 

     } 

Я действительно не знаю, что использовать, как я сказал ... Любая помощь пожалуйста?

+0

попробовать с UpdateAll путем предоставления идентификатора. –

+0

спасибо за ваш ответ @anantkumarsingh. Я ищу updateAll(), и я не получаю то, что я должен поместить в $ fields и $ conditions. SQL-запрос, который я хочу, это UPDATE-клиенты SET (все поля в форме) WHERE id = $ id ... – Marien

+0

Пожалуйста, попробуйте сказать, что это работает или нет? –

ответ

1

Код для редактирования записей довольно прямо вперед:

public function modify($id = null){ 
     if(empty($id)){ 
      throw new NotFoundException; 
     } 
     $client = $this->Clients->get($id); 
     if ($this->request->is(['post', 'put']) { 
      $client = $this->Clients->patchEntity($client, $this->request->data); 
      if ($this->Clients->save($client)) { 
       return $this->redirect($someURL); 
      } 
     } 
     $this->set('client', $client); 

} 
+0

благодаря @ JoséLorenzo, он работает! updateAll не полезен в этой ситуации, я думаю! – Marien

+0

Подробнее об исправлении сущностей (только обновляемые поля, которые были изменены) можно найти в документах здесь: http://book.cakephp.org/3.0/en/orm/saving-data.html#merging-request-data-into -entities – Coreus

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