2017-05-10 6 views
2

J'ai utilisé CUploadedFile afin de télécharger plusieurs fichiers dans mon application web. Je code suivant à cette fin:Comment enregistrer les noms de fichiers muliple téléchargés dans un champ en yii 1

public function actionCreate(){ 
    $model=new Status(); 
    $this->performAjaxValidation($model); 
    if(isset($_POST['Status'])) 
    { 
     $model->attributes=$_POST['Status']; 
     Yii::log("actionCreate actionCreate inside if" .isset($_POST['Status'])); 
     $images = CUploadedFile::getInstancesByName('description'); 
     if(isset($images) && count($images)> 0) 
     { 

      foreach ($images as $image=>$pic) 
      { 
       if ($pic->saveAs(Yii::getPathOfAlias('webroot').'/uploads/'.$pic->name,0777)) 
       { 
        $model= new Status(); 
        $model->description =$pic->name; 
        $url = Yii::getPathOfAlias('webroot').'/uploads'; 
        $model->insert(); 
       } 
      } 
      $this->redirect(array('view','id'=>$model->status_id)); 
     } 
    } 

    $this->render('create',array(
     'model'=>$model, 
    )); 
} 

Lorsque je télécharge plusieurs fichiers, il enregistre tous mais avec des ids (PK) .Je besoin de sauvegarder tous les fichiers téléchargés noms à un champ appelé description. Comment puis-je le faire?

+0

Désolé, mais je ne comprends pas la question. Que fait le PK (clé primaire) ici? Qu'entendez-vous par «champ»? – szako

+0

Maintenant que je vois la première réponse, je comprends maintenant ce que vous vouliez. :) – szako

Répondre

0

Essayez-le faire de cette façon

public function actionCreate(){ 
    $model=new Status(); 
    $this->performAjaxValidation($model); 
    if(isset($_POST['Status'])) 
    { 
     $model->attributes=$_POST['Status']; 
     Yii::log("actionCreate actionCreate inside if" .isset($_POST['Status'])); 
     $images = CUploadedFile::getInstancesByName('description'); 
     if(isset($images) && count($images)> 0) 
     { 
      // Create a blank array. 
      $pic_name = array(); 
      foreach ($images as $image=>$pic) 
      { 
       if ($pic->saveAs(Yii::getPathOfAlias('webroot').'/uploads/'.$pic->name,0777)) 
       { 

        //Put values in array. 
        $pic_name[$image] = $pic->name; 
        $url = Yii::getPathOfAlias('webroot').'/uploads'; 

       } 
      } 
      // If array has multiple values i.e. more than zero then and only then save it in description as a string. 
      if(count($pic_name) > 0){ 
       $_pics = implode('|',$pic_name); 

       // Do not create model everytime a new image is iterated 
       $model= new Status(); 
       $model->description = $_pics; 

       $model->insert(); 
      } 

      $this->redirect(array('view','id'=>$model->status_id)); 
     } 
    } 

    $this->render('create',array(
     'model'=>$model, 
    )); 
} 

Je ne sais pas quelle est l'utilisation de $ url dans la boucle, c'est pourquoi je l'ai gardé comme il est.