路线
Route::get('/site/{site_name_en}/{id}', array(
'as' => 'profile-site',
'uses' => 'ProfileController@site'
));
控制器
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);
}
}
我要实现的目标是:当我访问以下URL时www.domain.com/site/abc/123456
,它将根据参数显示正确的页面。该where
条款正确吗?(因为我无法检索该值)
你的路线
Route::get('/site/{site_name_en}/{id}',
说第一个参数是站点名称,第二个参数是ID,但是您的控制器函数交换了参数。您应该称呼它为:
public function site($site_name_en, $id){
// rest of code
}
参数将按照路由定义的顺序自动传递,而变量名(IIRC)无法识别这些参数。
至于功能的其余部分,我无法真正判断出您是否做对了,但是我可以建议:
$site = Site::where('id', '=', $id)
->where('site_name_en', '=', $site_name_en)
->first();
if($site){
return View::make('profile.site');
}
return App::abort(404);
或者,您可以使用firstOrFail()
,ModelNotFoundException
如果未找到您可以捕获的记录,则会抛出,App::error()
(例如,实现概述在手册中)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句