2017-09-01 3 views
0

Ich mache nur Tags-System für meinen Blog mit vielen zu vielen Beziehung in Laravel. Jetzt versuche ich multitag aber seine immer Fehler hinzuzufügen:Ungültiges Argument für foreach() Laravel-Tags

Invalid argument supplied for foreach() 

hier ist mein Controller

public function blogpost(Request $request){ 
    $this->validate($request, [ 
     'title' => 'required|max:255|unique:blogs', 
     'content' => 'required', 
     'image' => 'image|required', 
    ]); 
    $blog = new blog; 
    $blog->title = $request->title; 
    $blog->content = $request->content; 
    $blog->slug = str_slug($blog->title, '-'); 
    $blog->user_id = Auth::user()->id; 
    $blog->published_at = $request->published_at; 
    if($request->hasFile('image')) { 
     $file = Input::file('image'); 
     //getting timestamp 
     $timestamp = str_replace([' ', ':'], '-', Carbon::now()->toDateTimeString()); 
     $name = $timestamp. '-' .$file->getClientOriginalName(); 
     $file->move(public_path().'/images/blog/', $name); 
     $blog->image = $name; 
     $thumb = Image::make(public_path().'/images/blog/' . $name)->resize(640,420)->save(public_path().'/images/blog/thumb/' . $name, 90); 
    } 

    $blog_id = $blog->id; 
    $tags = $request->tag; 

    foreach ($tags as $tag) { 
     $tag = tag::firstOrNew(['name' => $tag]); 
     dd($tag); 
    } 

    return Redirect::back()->with('status', 'Post Success'); 
} 
+0

Zeigen Sie Ihr Formular. Wie sammeln Sie das Feld "tag"? –

+0

'$ tags' dürfen kein Array sein. Dump den Wert mit "dd", um zu bestätigen. – ceejayoz

Antwort

1

Was Sie tun sollten, ist, sicherzustellen, dass Tag-Array ist, so dass Sie Ihre Validierung verbessern sollte wie so:

$this->validate($request, [ 
     'title' => 'required|max:255|unique:blogs', 
     'content' => 'required', 
     'image' => 'image|required', 
     'tag' => 'array|required', 
     'tag.*' => 'required|string', 
    ]); 

Jetzt validiere Sie es nicht, so dass Sie nicht wissen, was Sie in tag haben - ist es einfacher String oder null oder etwas anderes.

+0

Danke, ich habe vergessen, Array hinzuzufügen –

Verwandte Themen