So Bearbeiten Sie ein Bild in laravel 5, wenn der Benutzer laden Sie eine neue ein ,sonst laden mit alten Bild-Datei
Ich habe ein edit-form, die hat ein image-Feld, wo ein Benutzer können ein neues Bild hochladen, wenn er möchte.
Aber wenn der Benutzer nicht ein neues Foto hochladen will ich nur das Foto, das ist schon in der Datenbank. Und nicht aktualisieren Sie das Bild-Feld überhaupt. Aber in meinem code, wenn ich versuche, ohne hochladen von neuen Erscheinungsbild form ist nicht unter der alten input-Wert.
Hier ist meine edit-Funktion:
public function expenseupdate1(){
$input = Input::only('id','Expense_date','Expense_category_id','Vendor_id','Customer_id','Amount','Tax1_id','Tax2_id','Note','Receipt');
$data=new Expense;
$id=$input['id'];
$Expense_date=$input['Expense_date'];
$Expense_category_id=$input['Expense_category_id'];
$Vendor_id=$input['Vendor_id'];
$Customer_id=$input['Customer_id'];
$Amount=$input['Amount'];
$Tax1_id=$input['Tax1_id'];
$Tax2_id=$input['Tax2_id'];
$Note=$input['Note'];
if(Input::hasFile('Receipt')) {
$file = Input::file('Receipt');
$name = time() . '-' . $file->getClientOriginalName();
$data->Receipt = $name;
$file->move(public_path() . '/images/', $name);
}
$affectedrows=Expense::where('id', '=', $id)->update(array('Expense_date' => $Expense_date,'Expense_category_id'=>$Expense_category_id,'Vendor_id'=>$Vendor_id,'Customer_id'=>$Customer_id,'Amount'=>$Amount,'Tax1_id'=>$Tax1_id,'Tax2_id'=>$Tax2_id,'Note'=>$Note,'Receipt'=>$Receipt));
return redirect('expenseinfo');
}
und hier ist mein update form Feld Bild-code:
<td> <div class="form-group"style="margin-left:-305px">
{!! Form::label('image', 'Receipt') !!}
<input Input::old('Receipt'), type="file" name="Receipt" value = '{{$data->Receipt}}'></td><td><?php echo $data->Receipt; ?></td>
</div></td>
<tr>
<td>{!! Form::submit('Update', array( 'class'=>'' )) !!}
{!! Form::close() !!}</td>
Jede Hilfe würde geschätzt werden, stark
- Ist
Expense
ein Beredtes Modell?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Würden Sie nicht einen Standardwert für die Datei.
So, Ihre Anwendung richtig verhält. Da das Bild bereits in der Datenbank, die Sie nicht brauchen, um es wieder hochgeladen.
Auch, nur zur info, aber Sie bereinigen kann Ihr controller-Methode drastisch!
Oben davon ausgegangen, dass Sie über die erforderlichen
use
Aussagen oben du bist der controller dhWenn Sie nicht bereits haben, sollten Sie den befüllbaren array für Sie Modell zu ermöglichen, die
fill()
Methode (mass-Einsatz) zu arbeiten http://laravel.com/docs/5.1/eloquent#mass-assignmentGibt es noch mehr, die Sie tun können, aber ich habe schon Weg außerhalb des Geltungsbereichs dieser Frage. Ich würde jedoch empfehlen sich bei:
http://laravel.com/docs/5.1/routing#route-model-binding
http://laravel.com/docs/5.1/controllers#restful-resource-controllers
http://laravel.com/docs/5.1/controllers#dependency-injection-and-controllers
Hoffe, das hilft!