자세한 솔루션은 CActiveForm 또는 CHtml 양식을 사용하는지 여부에 따라 달라집니다. 2 개의 관련 모델을 가지고 있으므로 CActiveForm을 사용하고 있다고 가정하고 계속 염두에 두어야 할 몇 가지 사항을 지적 할 것입니다. 이 예를 들어
나는 나는 거 몇 가지 정의를 필드 ID로 제품 이름 필드 ID, productId에, 경로
나는 또한이 가정에 ProductImage ProductImage에 '이미지'에 많은 관계로 하나 제품을 가정 거 1 업로드/편집 할 수 있지만, 다중 여기
뷰의 삭제 :
를
$form = $this->beginWidget(
'CActiveForm',
array(
'id' => 'upload-form',
'enableAjaxValidation' => false,
'htmlOptions' => array('enctype' => 'multipart/form-data'),
)
);
echo $form->labelEx($product, 'name');
echo $form->fileField($product, 'name');
echo $form->error($product, 'name');
echo $form->checkBoxList($product, 'path', $product->images);
echo $form->labelEx($productImage, 'path');
echo $form->fileField($productImage, 'path');
echo $form->error($productImage, 'path');
$this->endWidget();
그리고 당신의 행동
public function actionUpdate($productId) {
$product = Product::model()->findByPk($productId)->with('images');
$productImage = new ProductImage();
if(isset($_POST['Item']))
{
$product->attributes=$_POST['Product'];
foreach($product->images as $im) {
if(in_array($im->path, $_POST['Item']['Image']))
$im->delete();
}
$productImage->image=CUploadedFile::getInstance($productImage,'path');
if($productImage->save())
{
$productImage->image->saveAs('some/new/path');
// redirect to success page
}
}
$this->render('update', array(
'product'=>$product,
'productImage'=>$productImage,
));
}
이제이 솔루션은 버그가 없으므로 테스트되지는 않지만 자신의 폼을 작성하는 방법에 대한 아이디어를 제공해야합니다.
자료 : 여러 이미지 업로드 사용하기 위해 http://www.yiiframework.com/wiki/2/how-to-upload-a-file-using-a-model/
http://www.yiiframework.com/wiki/384/creating-and-updating-model-and-its-related-models-in-one-form-inc-image
이 확장. http://www.yiiframework.com/extension/eajaxupload/ 미리보기 이미지를 만들려면 ... http://www.yiiframework.com/extension/simpleimage/ –