2016-08-09 118 views
1

Es ist das erste Mal, dass ich hier posten, kann mir hier jemand möchte helfen, das Objekt zuzugreifen, wird mein Associacion Ich habe in meinem Controller sehen einen Wert zuzuweisen und diese hier in einem bestimmten Bereich gespeichert Mein CodeZugang von einem Verein im Besitz CakePHP

// Controller Advertisements 

namespace App\Controller; 

Verwenden Cake \ Filesystem \ Ordner; verwenden Sie Cake \ Filesystem \ File;

Klasse AdvertisementsController erweitert AuthController {

public function publicadd() { 
    $publicadd = $this->Advertisements->newEntity(null,['associated' => ['AdvertisementsImagenes' 
      => ['fieldList' => 'name_imagen']]]); 
    if($this->request->is('post')){ 
     $publicadd = $this->Advertisements->patchEntity($publicadd,$this->request->data,['associated' => ['AdvertisementsImagenes' 
      => ['fieldList' => 'name_imagen']]]); 
     if ($this->request->data['advertisements_imagenes']['name_imagen']['error']==0) { 
      $publicadd->AdvertisementsImagenes->name_imagen = $this->request->data['advertisements_imagenes']['name_imagen']['name']; 
      new Folder(WWW_ROOT . 'anuncios',true,0755); 
      $image = new File($this->request->data['advertisements_imagenes']['name_imagen']['tmp_name']); 
      $image->copy(WWW_ROOT . 'anuncios/'.$this->request->data['advertisements_imagenes']['name_imagen']['name']); 

     } 
     $publicadd->id_user = $this->Auth->user('id_user'); 
     if ($this->Advertisements->save($publicadd)) { 
      $this->Flash->success('Anuncio Publicado'); 
      $this->redirect(['controller' => 'Home','action' => 'index']); 
     } else { 
      $this->Flash->error('Error al Publicar'); 
     } 
    } 
    $this->set('advertisements',$publicadd); 
} 

}

// Entität Werbung

class Advertisement extends Entity{ 
protected $_accessible = [ 
    '*' => true, 
    'id_advertisement' => false, 
]; 

}

// Einheit Relation AdvertisementImagen

class AdvertisementImagen extends Entity{ 
protected $_accessible = [ 
    'name_imagen' => true, 
    'id_advertisement' => false, 

]; 

}

// Fehler Hinweis (8): Indirekte Änderung von überladener Eigenschaft App \ Modell \ Entity \ Werbung :: AdvertisementsImagenes $ hat keine Auswirkung [APP/Regler \ AdvertisementsController.php, Zeile 25]

// Kontext, Code

=> ['fieldList' => 'name_imagen']]]); 
     if ($this->request->data['advertisements_imagenes']['name_imagen']['error']==0) { 
      $publicadd->AdvertisementsImagenes->name_imagen = $this->request->data['advertisements_imagenes']['name_imagen']['name']; 

$publicadd = object(App\Model\Entity\Advertisement) { 

'id_categorie' => (int) 1, 
'id_article' => (int) 1, 
'id_article_size' => (int) 1, 
'id_state_article' => (int) 1, 
'title' => 'Pruebas Mujer', 
'price' => (float) 260, 
'description' => 'Pruebas imagenes', 
'advertisements_imagenes' => [ 
    (int) 0 => object(App\Model\Entity\AdvertisementImagen) {} 
], 
'[new]' => true, 
'[accessible]' => [ 
    '*' => true 
], 
'[dirty]' => [ 
    'id_categorie' => true, 
    'id_article' => true, 
    'id_article_size' => true, 
    'id_state_article' => true, 
    'title' => true, 
    'price' => true, 
    'description' => true, 
    'advertisements_imagenes' => true 
], 
'[original]' => [], 
'[virtual]' => [], 
'[errors]' => [], 
'[invalid]' => [], 
'[repository]' => 'Advertisements' 

}

bitte helfen Danke

+0

Sie sollten Ihre Beziehungen, in jedem Fall erklären versuchen '$ publicadd-> advertisements_imagenes-> etc ...' Sie sollten Kleinbuchstaben verwenden unterstrichen, wenn Sie ein Objekt zugreifen (oder ein Array von Entitäten) innerhalb einer anderen Entität. Verwenden Sie stattdessen CamelCase, wenn Sie über ein anderes Modell auf ein Modell zugreifen. – arilia

+0

Bitte könnten Sie erklären, ein wenig besser nicht Vielen Dank verstehen –

+0

einfach nicht '$ publicadd-> AdvertisementsImagenes->' aber '$ publicadd-> advertisements_imagenes' (oder so ähnlich, wie ich jetzt nicht, wie man richtig Ihre Modelle pluralize und auch ich nicht jetzt die Beziehungen zwischen den Modellen). Lesen Sie [hier] (http://book.cakephp.org/3.0/en/intro/conventions.html) über Kuchenkonventionen. Insbesondere Lese über Entität Namenskonventionen – arilia

Antwort

0

Ich einzige Änderung in meiner Position Controller beheben könnte und wählen Sie das Array

$ publicadd-> advertisements_imagenes [0] -> name_imagen = $ this-> request-> data [ 'advertisements_imagenes '] [' name_imagen '] [' name '];

public function publicadd() { 
    $publicadd = $this->Advertisements->newEntity(); 
    if($this->request->is('post')){ 
     $publicadd = $this->Advertisements->patchEntity($publicadd,$this->request->data,['associated' => ['AdvertisementsImagenes' 
      => ['accessibleFields' => ['name_imagen'=>true]]]]); 
     if ($this->request->data['advertisements_imagenes']['name_imagen']['error']==0) { 
      $publicadd->advertisements_imagenes[0]->name_imagen = $this->request->data['advertisements_imagenes']['name_imagen']['name']; 
      new Folder(WWW_ROOT . 'anuncios',true,0755); 
      $image = new File($this->request->data['advertisements_imagenes']['name_imagen']['tmp_name']); 
      $image->copy(WWW_ROOT . 'anuncios/'.$this->request->data['advertisements_imagenes']['name_imagen']['name']); 
     } 
     $publicadd->id_user = $this->Auth->user('id_user'); 
     if ($this->Advertisements->save($publicadd)) { 
      $this->Flash->success('Anuncio Publicado'); 
      $this->redirect(['controller' => 'Home','action' => 'index']); 
     } else { 
      $this->Flash->error('Error al Publicar'); 
     } 
    } 
    $this->set('advertisements',$publicadd); 
    $query_categories = $this->Categories->find('list'); 
    $this->set('categories',$query_categories); 
    $query_articles = $this->Articles->find('list'); 
    $this->set('articles',$query_articles); 
    $query_sizes = $this->ArticlesSizes->find('list'); 
    $this->set('sizes',$query_sizes); 
    $query_articles_states = $this->StatesArticles->find('list'); 
    $this->set('states',$query_articles_states); 
} 

Danke