Ich habe Datei-Upload-Funktion zu meinem Controller hinzugefügt, Datei wird im angegebenen Verzeichnis gespeichert, aber Ansichten wie Update, Index, Ansicht zeigt nur den Namen der Datei. Ich brauche einen Link oder eine Schaltfläche, um mit dieser hochgeladenen Datei zu interagieren. Zum Beispiel Öffnen der Datei durch Drücken auf diesen Link oder Schaltfläche auch Herunterladen dieser Datei. Könntest du mir dabei helfen?Wie kann ich hochgeladene Dateien in yii2 Ansichten anzeigen und damit interagieren?
Modell:
public function rules()
{
return [
...
[['attachment'],'file'],
];
}
Controller:
public function actionCreate()
{
$model = new Letter();
if ($model->load(Yii::$app->request->post())) {
$model->attachment = UploadedFile::getInstance($model, 'attachment');
$filename = pathinfo($model->attachment , PATHINFO_FILENAME);
$ext = pathinfo($model->attachment , PATHINFO_EXTENSION);
$newFname = $filename.'.'.$ext;
$path=Yii::getAlias('@webroot').'/uploads/';
if(!empty($newFname)){
$model->attachment->saveAs($path.$newFname);
$model->attachment = $newFname;
if($model->save()){
return $this->redirect(['view', 'id' => $model->id]);
}
}
}
return $this->render('create', [
'model' => $model,
]);
Formularansicht:
<?php $form = ActiveForm::begin(['options' => ['enctype'=>'multipart/form-data']]); ?>
...
<?= $form->field($model, 'attachment')->fileInput() ?>
<div class="form-group">
<?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
</div>
<?php ActiveForm::end(); ?>
Vielen Dank im Voraus.
Hallo, danke für Antworten. Es sagt undefinierte Variable $ Modell. Soll ich das als Parameter hinzufügen oder die globale Variable $ model = new Letter() erstellen? –
@VitalyPark aktualisiert Controller-Code Bitte überprüfen Sie es jetzt – jithin
Etwas wird falsch mit If-Anweisung in der Formularansicht. Der Teil "isNewRecord):?>" Erscheint wie ein einfacher Text. –