2016-05-05 24 views
0

我是Yii的新手。我需要創建產品模塊來保存產品數據。我需要創建兩個表productsproduct_image來保存產品數據和多個產品圖像。如何在Yii中插入多個表中的數據

產品表

ID,CATEGORY_ID,標題,價格,描述

產品圖像表

ID,PRODUCT_ID,圖像

我已經創建了上面的表格,併爲產品表格生成了模型和CRUD。但當我轉到添加產品頁面時,我沒有獲取圖像上傳按鈕。 我只在product表中添加產品頁面。

我應該創建的模型有兩個表來獲取圖像上傳按鈕?

如何插入多個表中的數據在警予?

在此先感謝。

最新通報

ProductController的:

public function actionCreate() 
    { 
     $model = new Products(); 
     $productsImage = new ProductsImage(); 
     if ($model->load(Yii::$app->request->post()) && $model->save()) { 

      return $this->redirect(['view', 'id' => $model->id]); 
     } else { 
      return $this->render('create', [ 
       'model' => $model, 
       'productsImage'=> $productsImage, 
      ]); 
     } 
    } 

我的外接產品form.php的

<div class="products-form"> 

    <?php $form = ActiveForm::begin(); ?> 

    <?= $form->field($model, 'category_id')->dropDownList(['0'=>'Select Parents Category']+ 
     ArrayHelper::map(ProductCategory::find()->all(),'id','category_name') 
    ) ?> 

    <?= $form->field($model, 'title')->textInput(['maxlength' => true]) ?> 

    <?= $form->field($model, 'price')->textInput() ?> 

    <?= $form->field($model, 'description')->textarea(['rows' => 6]) ?> 


    <?= $form->field($productsImage,'image')->fileInput() ?> //here i am getting error of undefined variable $productsImage 

    <div class="form-group"> 
     <?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> 
    </div> 

    <?php ActiveForm::end(); ?> 

</div> 

回答

1

在你的產品桌子上有圖像,所以你沒有得到上傳圖像按鈕沒有現場。這可以通過很多方式來完成。 1)您可以在產品模型中爲圖像按鈕創建公共變量。假設你已經在產品模型中創建了公共變量,如public $productImage,並且在視圖文件中可以使用此代碼爲圖像創建上傳按鈕。

`echo $form->fileField($model,'productImage',array('class' => 'btn'));` 

2)如果你想創建productImage模型第二個選項,那麼你需要傳遞從創建產品的行爲該對象。假設在您的產品控制器中創建動作,您可以創建productImages模型的對象,如下所示。

$productImages = new productImages; 

,你需要在通過這個模型變量像這樣

$this->render('create',array(
       'model'=>$model, 
       'productImages'=> $productImages, 

       )); 

這裏假設$模式是你的產品模型對象創建視圖。在視圖文件中,您可以創建像下面的代碼一樣的圖像按鈕。

echo $form->fileField($productImages,'product_image',array('class' => 'btn')); 

這裏'product_image'是你的product_image表的列名。在控制器創建行動中,您將在後期使用product_images發佈帖子對象後保存數據如何你想我希望你會明白你現在需要做什麼。希望它可以幫助你

+0

謝謝讓我檢查和實施。 –

+0

嗨@dinesh我使用你的代碼,但我gettin錯誤「未定義的變量:productsImage」在視圖/ _form.php –

+0

看到我已更新我的問題和共享控制器代碼; –

1

Yii2提供了一種方法來處理這種情況:

在你的產品控制器:

public function actionCreate() 
{ 
    $product = new app\models\Product(); 
    $productImages = new app\models\ProductImage(); 

    if($product->load(Yii::$app->request->post()) && $productImages->load(Yii::$app->request->post()) && Model::validateMultiple([$product, $productImages])) { 

     // your other file processing code   

     $product->save(); 
     $productImages->save(); 

     // return/redirection statement 
    }else { 
     return $this->render(['create', 'product' => $product, 'productImages' => $productImages]); 
    } 
} 
+0

謝謝。但在添加產品頁面我沒有獲得上傳圖像選項(文件上傳選項)。 –

+0

@DeepParekh請編輯您的問題,提供您的代碼,以便它更容易調試... –

相關問題