Php 如何在使用不同模型的表单中实现kartik yii2 FileInput
以下是myyiiapp\backend\views\product\u form.php中的代码Php 如何在使用不同模型的表单中实现kartik yii2 FileInput,php,mysql,frameworks,widget,yii2,Php,Mysql,Frameworks,Widget,Yii2,以下是myyiiapp\backend\views\product\u form.php中的代码 <?php use yii\helpers\Html; use yii\widgets\ActiveForm; use kartik\widgets\FileInput; /** * @var yii\web\View $this * @var backend\models\Product $model * @var yii\widgets\ActiveForm $form */
<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
use kartik\widgets\FileInput;
/**
* @var yii\web\View $this
* @var backend\models\Product $model
* @var yii\widgets\ActiveForm $form
*/
?>
<div class="product-form">
<?php $form = ActiveForm::begin(); ?>
<?= $form->field($model, 'category_id')->textInput() ?>
<?= $form->field($model, 'name')->textInput(['maxlength' => 255]) ?>
<?= $form->field($model, 'description')->textarea(['rows' => 6]) ?>
<?= $form->field($model, 'created')->textInput() ?>
<?= $form->field($model, 'last_updated')->textInput() ?>
<?= $form->field($model, 'documentation')->textInput(['maxlength' => 255]) ?>
<?= $form->field($model, 'layout')->textInput() ?>
<?=
// Usage with ActiveForm and model
$form->field($model, 'someAttributeName')->widget(FileInput::classname(), [
'options' => ['accept' => 'image/*'],
]);
?>
<div class="form-group">
<?= Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
</div>
<?php ActiveForm::end(); ?>
</div>
我有一个表名“product”,还有一个表名“product\u images”,其中包含产品图像路径和产品id列
如何为ProductImage模型中的图像设置属性,其中显示someAttributeName,此表单使用的是Product模型。简而言之,我们如何在这里使用多个模型,我需要先创建产品,然后创建图像路径,因为要保存图像路径,我需要产品id,它将由mysql自动生成
我已经从Yii2 crud生成了所有内容。经过多次尝试和错误,我终于找到了自己问题的解决方案 查看:_form.php
<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
use kartik\widgets\FileInput;
/**
* @var yii\web\View $this
* @var backend\models\Product $model
* @var yii\widgets\ActiveForm $form
*/
?>
<div class="product-form">
<!--change here: This form option need to be added in order to work with multi file upload ['options' => ['enctype'=>'multipart/form-data']]-->
<?php $form = ActiveForm::begin(['options' => ['enctype'=>'multipart/form-data']]); ?>
<?= $form->field($model, 'category_id')->dropDownList($model->getCategoryList()) ?>
<?= $form->field($model, 'name')->textInput(['maxlength' => 255]) ?>
<?= $form->field($model, 'description')->textarea(['rows' => 6]) ?>
<?= $form->field($model, 'created')->textInput() ?>
<?= $form->field($model, 'last_updated')->textInput() ?>
<?= $form->field($model, 'documentation')->textInput(['maxlength' => 255]) ?>
<?= $form->field($model, 'layout')->textInput() ?>
<?php
// Usage with ActiveForm and model
//change here: need to add image_path attribute from another table and add square bracket after image_path[] for multiple file upload.
echo $form->field($productImages, 'image_path[]')->widget(FileInput::classname(), [
'options' => ['multiple' => true, 'accept' => 'image/*'],
'pluginOptions' => [
'previewFileType' => 'image',
//change here: below line is added just to hide upload button. Its up to you to add this code or not.
'showUpload' => false
],
]);
?>
<div class="form-group">
<?= Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
</div>
<?php ActiveForm::end(); ?>
</div>
var_dump($file)这将显示上传图像数据的输出
array (size=3)
0 =>
object(yii\web\UploadedFile)[45]
public 'name' => string '1.jpg' (length=5)
public 'tempName' => string 'D:\wamp\tmp\php8E46.tmp' (length=23)
public 'type' => string 'image/jpeg' (length=10)
public 'size' => int 77593
public 'error' => int 0
1 =>
object(yii\web\UploadedFile)[46]
public 'name' => string '2.jpg' (length=5)
public 'tempName' => string 'D:\wamp\tmp\php8E56.tmp' (length=23)
public 'type' => string 'image/jpeg' (length=10)
public 'size' => int 74896
public 'error' => int 0
2 =>
object(yii\web\UploadedFile)[47]
public 'name' => string '3.jpg' (length=5)
public 'tempName' => string 'D:\wamp\tmp\php8E57.tmp' (length=23)
public 'type' => string 'image/jpeg' (length=10)
public 'size' => int 72436
public 'error' => int 0
array (size=3)
0 =>
object(yii\web\UploadedFile)[45]
public 'name' => string '1.jpg' (length=5)
public 'tempName' => string 'D:\wamp\tmp\php8E46.tmp' (length=23)
public 'type' => string 'image/jpeg' (length=10)
public 'size' => int 77593
public 'error' => int 0
1 =>
object(yii\web\UploadedFile)[46]
public 'name' => string '2.jpg' (length=5)
public 'tempName' => string 'D:\wamp\tmp\php8E56.tmp' (length=23)
public 'type' => string 'image/jpeg' (length=10)
public 'size' => int 74896
public 'error' => int 0
2 =>
object(yii\web\UploadedFile)[47]
public 'name' => string '3.jpg' (length=5)
public 'tempName' => string 'D:\wamp\tmp\php8E57.tmp' (length=23)
public 'type' => string 'image/jpeg' (length=10)
public 'size' => int 72436
public 'error' => int 0