我正在尝试将资源(“粉丝”)分解为单独的路由,这样我就可以为各个资源页面提供自定义URL,而不是仅使用$ id。
所以不要这样:
Route::resource('fans', 'FansController');
我已将其分解为:
Route::get('fans/{url_tag}', array('as' => 'customUrl', function($url_tag)
{
$fan = Fan::where('url_tag','=',$url_tag);
return View::make('fans.show', compact('fan'));
}))
->where('url_tag', '[A-Za-z]+');
Route::get('fans/{id}', function($id)
{
// do something with $id or
return Redirect::route('customUrl');
})
->where('id', '[0-9]+');
在粉丝控制器中,我有这个:
public function show($id)
{
$fan = Fan::find($id);
return View::make('fans.show', compact('fan'))
->with('fans', Fan::all())
->with('latest_fan_likes', Fanartist::latest_profile_fan_likes($id));
}
基本上我希望page / fans / $ id显示为/ fans / $ url_tag(其中url_tag是db中的另一列,这是唯一的)。但我希望它具有资源的所有属性,因此我可以直接调用$ fan->列。
当我运行时,我收到错误:
缺少一些必需参数(“url_tag”)来生成路由“customUrl”的URL。
知道发生了什么或出了什么问题?我正在使用Laravel 4.谢谢。
答案 0 :(得分:0)
您可能正在尝试生成URL,代码中的其他位置,控制器甚至视图中的某些内容(可能不是那样!):
URL::route('customUrl');
or
route('customUrl');
但您需要提供url_tag
:
URL::route('customUrl', array('url_tag' => 'something');
因为你可能是这样的:
URL::route('customUrl', array('url_tag' => $fan->url_tag);