übergeben 2 Parameter von der route controller in Laravel 4
Route
Route::get('/site/{site_name_en}/{id}', array(
'as' => 'profile-site',
'uses' => 'ProfileController@site'
));
Controller
class ProfileController extends BaseController{
public function site($id, $site_name_en){
$site = Site::where('id', '=', $id)
->where('site_name_en', '=', $site_name_en);
if($site->count()){
$site = $site->first();
return View::make('profile.site')
->with('site', $site);
}
return App::abort(404);
}
}
Was ich versuche zu erreichen ist: dass, wenn ich besuchen Sie die folgende URL www.domain.com/site/abc/123456
es wird alles korrekt angezeigt Seite auf der Grundlage der Parameter. Ist die where
- Klausel korrekt? (da konnte ich nicht den Wert abrufen)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre route
sagt der 1. parameter ist der name der Website, der zweite die id, aber Ihre controller-Funktion hat die Argumente vertauscht. Sie sollten es nennen:
Parameter automatisch übergeben, nach unten in der Reihenfolge, wie Sie definiert sind durch die Strecke, und nicht erkannt werden, die durch den variable-Namen (IIRC).
Als für den rest der Funktion kann ich nicht wirklich sagen, ob Sie Recht hat oder nicht, aber ich kann empfehlen diese:
Alternativ können Sie
firstOrFail()
, die wirft einModelNotFoundException
wenn der Datensatz nicht gefunden wird, dass man Sie fangen kann, mitApp::error()
zum Beispiel (eine Implementierung ist beschrieben in der Anleitung)