2016-09-18 1 views
1

ich einen Controller für einen Newsletter zu bauen tryng, sie ist mein Code:MethodNotAllowedHttpException in RouteCollection.php Linie 218:

-Controller

public function postNews(Request $request, $user) { 
    $this->validate($request, [ 'email' => 'required | email' ]); 

    $user = User::findOrFail($id); 
    $data = array(
     'email' => $request->email); 

     $token = $request->input('g-recaptcha-response'); 
     if (strlen($token) > 0) { 

     Mail::send('emails.newsletter', $data, function($message) use ($data) { 
     $message->from($data['email']); 
     $message->to($user->email, $user->name)->subject('A-Studio News Letter'); 
     //$message->subject($data['subject']); 
     }); 
     Session::flash('success', 'Grazie per esserti iscritto alla nostra news letter!'); 
     return view('blog.posts')->withPosts($posts); 
     }else { 
     return view('pages.nobot'); 
     } 
} 

Strecke

 Route::post('posts/{user}', ['uses' => '[email protected]', 'as' => 'blog.posts']); 

Antwort MethodNotAllowedHttpException in RouteCollection.php Zeile 218:

Irgendeine Idee?

Vielen Dank.

+0

Sehen Sie sich Ihre Routen genau an. Gibt es eine andere Route, die "posts/{var}" hat? Wenn es vor Ihrer 'POST'-Route definiert ist, wird es überschrieben und Sie erhalten eine 'MethodNotAllowedHttpException', weil diese Route nicht korrekt formatiert ist. –

+0

Bitte geben Sie den Code ein, der die Route "blog.post" aufruft. –

+0

Mit einer Post-Route schätze ich, dass Sie ein Formular abschicken. Warum senden Sie ein Formular mit einem dynamischen URI '{user}'? Wenn Sie diesen Post senden, was tun Sie mit dieser '{user}' - Variable in Ihrer Route? – Michel

Antwort

-1

Sie sollten POST-Anfrage machen

<form action="posts/{{user}}" method="POST"> 
+0

Hallo, ich habe es geschafft und ich bekomme dieses mex: Undefinierte Variable: ID, Panzer für die Hilfe! –

0
<form method="post" action="/posts"> 
<input name="email" type="email"> 
<button type="submit">subscribe</button> 
</form> 

Route::post('/posts', '[email protected]'); 

public function userSubscribe(Request $request){ 
    $data = $request->input('email'); 
    //Validate $data if necessary and save in the DB 

} 

Diese funktionieren sollte.

+0

Das war hilfreich, tankyou –

+0

Froh, dass es geholfen hat. Sie können die Antwort für andere Personen, die das gleiche Problem haben, als korrekt markieren. – Michel

0

Sie das entfernen sollte,

Route::post('posts/{user}', '....');   

Verwendung als

Route::post('posts', '....');   

Und auch die Controller verwenden Funktion mit $ user Variable in den Parametern.

Ich hoffe, das wird Ihnen helfen.

+0

Ich habe es getan, nicht funktioniert aber danke für die Hilfe! –

Verwandte Themen