(0)
Artikel
bewerten
(100% positiv)
(1)

Standardmäßig werden für das Erstellen und für das Bearbeiten eines Eintrages unterschiedliche Views und somit verschiedene HTML-Formulare verwendet. Im Controller kann anhand der Methode unterschieden werden, ob es sich um einen neuen Eintrag (Insert) oder um das Bearbeiten eines bestehenden Eintrages handelt (update). 

Die Methode POST wird für neue Einträge verwendet, PUT/PATCH für Updates. Damit für Updates und Inserts dasselbe Formular verwendet werden kann, müssen wir im Controller unterscheiden ob es sich um einen neuen Eintrag oder um einen bestehenden handelt.

Ziel

Create

URL: item/create

lädt ein leeres Formular:

Überprüfung:

Eingabe einer Zahl:

..Redirect auf /item

Antwort:

"would create item property:456"

Edit

Aufruf: item/4/edit

lädt bereits gespeicherte Werte für ID: 4

beim Speichern wird die Eingabe im Controller überprüfen:

Ist die Validierung erfolgreich, findet ein Redirect auf /item statt:

Antwort:

"edit item ID:4 property:99"

 

Vorbereitung: Controller, Routes

 

Ich erstelle einen neuen Controller:

 

php artisan make:controller ItemController

 

Routes-File

Route::resource('item', 'ItemController');

 

 

View

Hier die View für das Edit / Create-Formular:

File: /resources/views/edit.blade.php

						@if (count($errors) > 0)
							<div class="alert alert-danger">
								<ul>
									@foreach ($errors->all() as $error)
										<li>{{ $error }}</li>
									@endforeach
								</ul>
							</div>
						@endif

						<form action="{{ url('item') }}" method="POST" class="form-horizontal">
								{{ csrf_field() }}
								<input type="hidden" name="id" class="form-control" value="{{$saveditem->id ?? ''}}">
								<input type="text" name="property" class="form-control" value="{{  old('property',$saveditem->property ?? null) }}">
								<button type="submit" class="btn btn-default">
									<i class="fa fa-btn fa-plus"></i>Speichern
								</button>
							
						</form>

Controller

Die Store-Funktion im Controller muss jetzt noch zwischen Update und Create entscheiden: Wird eine ID mitgegeben: Update, ansonsten: Create.

File:/app/Http/Controllers/ItemController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ItemController extends Controller
{
	public function create()
    {	
        return View('edit');
    }
	
    public function edit($id)
    {	

		$saveditem=(object) array(
				'id'  => $id,
				'property' => 'Property for a saved id'
			);
		/* DB Usage:
		$saveditem=Item::where('id',$id)->first();
		*/
		
        return View('edit',compact('saveditem'));
    }
	
	public function store(Request $request)
    {
			//dd($request);
            $this->validate($request, [
                   'property'       => 'required|numeric']);

					
			if ($request->id > 0) { //edit
				/*
					Missing: Test if the user is allowed to edit this Value
				*/
				dd("edit item ID:". $request->id. " property:". $request->property);				
			} else { //create
				dd("would create item property:". $request->property);
				/* DB Usage:
				$item = Item::create([
					'item' => $request->property
				 ]);
				 */
			}
		return redirect('home');
		
    }
}
letzte Änderung dieses Artikels: 27.11.2018 21:12




Kommentare