2015-07-01 10 views
5

ho scrivere una funzione di modifica aggiornare le informazioni di notizie, il mio codice:
questa è la funzione di file di controllo:in grado di aggiornare i dati nella banca dati attraverso la forma CakePHP

public function editnews($id) { 
    $this->layout = "news"; //tynemc call by this statement 
    $this->loadModel('News'); //model call 
    $this->loadModel('Category'); //load news category 
    if ($this->request->is('post')) { 
     if (move_uploaded_file($this->request->data['News']['image_url']['tmp_name'], WWW_ROOT . 'media/'. $this->request->data['News']['image_url']['name'])) { 

      $this->request->data['News']['image_url'] = time() . $this->request->data['News']['image_url']['name']; 
     }$this->News->save($this->request->data['News']);//data save by this statement 
     $msg = '<div class="alert alert-success"> 
     <button type="button" class="close" data-dismiss="alert">&times;</button> 
     <strong> News update successfully </strong> 
     </div>'; 
     $this->Session-> setFlash($msg); 
     return $this->redirect('editnews'); 
    } 
    if (!$this->request->data) { // id wise data search 
     $data = $this->News->findById($id); 
     $this->request->data = $data; 

    } 
    $this->set('categories', $this->Category->find("list"));//categories load in dropdown 
} 

questo è codice di azione sotto forma di file CTP:

non ho modificato titolo, immagine, newsdetail, non posso salvare informazioni, perché funziona così e come posso correggere la mia funzione per modificare un record?

risposta

2

Penso che tu debba affrontare un problema di azione. prova questo codice per l'azione.

<?php 

        echo $this->Form->create("News",array(
         'inputDefaults' => array(
          'label' => false, 
          'div' => false 
         ), 
         'url' => array(
          'controller' => 'admins', 
          'action' =>'editnews' 
          ), 
         'id' => 'form-validate', 
         'class' => 'form-horizontal', 
         'novalidate' => 'novalidate', 
         'enctype' => 'multipart/form-data' 
         ) 
        ); 
       ?> 

e provare questo codice come funzione.

public function editnews($newsid = null) { 
     $this->layout = "news"; 
     $this->loadModel('News'); 
     $this->loadModel('Category'); 
     $this->News->id = $newsid; 
     if ($this->request->is('get')) { 
      $this->request->data = $this->News->read(); 
     } 
     else { 
      $data = $this->request->data; 
      } 
      if ($this->News->save($data)) { 
       $this->Session->setFlash("Newsletter angelegt"); 

       $msg = '<div class="alert alert-success"> 
       <button type="button" class="close" data-dismiss="alert">&times;</button> 
       <strong> News update successfully </strong> 
       </div>'; 
       $this->Session->setFlash($msg); 
       $this->redirect(array('controller' => "admins", "action" => "manage_newses")); 
      } 
      else 
      { 
       $this->Session->setFlash("not updated"); 
       $this->render(); 
      } 
     } 
     if (!$this->request->data) { 
      $data = $this->News->findById($id); 
      $this->request->data = $data; 

     } 
     $this->set('categories', $this->Category->find("list"));} 
+1

grazie ma non riesco ad aggiornare il campo immagine !!! –

+1

sì. So di aver commentato quel codice. Ecco lo spostamento delle immagini e il codice di aggiornamento. Metti questo codice in funzione. if (move_uploaded_file ($ data ['News'] ['image_url'] ['tmp_name'], WWW_ROOT. 'media /'. $ data ['News'] ['image_url'] ['name'])) { $ data ['News'] ['image_url'] = $ data ['Notizie'] ['image_url'] ['nome']; } –

0

si dovrebbe provare il debug del codice un po ':

Provare a var_dump il move_uploaded_file per vedere cosa restituisce.

Anche var_dump $ this-> request-> data ['News'] e si prega di inserire i risultati qui, potrebbe non salvare a causa dei dati inviati. Se l'ID del tuo modello non è impostato, CakePHP non saprà cosa salvare/modificare.

Se non è possibile var_dump, è possibile utilizzare $ this-> log ($ myVar, 'debug'), e quindi controllare il file in app/tmp/logs/debug.log

In un'altra nota , di solito è meglio inserire l'HTML nelle viste, non nel controller (ma è più a tua conoscenza)