缺少一些必需参数(“url_tag”)来生成路由“customUrl”的URL。 Laravel 4

时间:2014-03-07 19:52:25

标签: php laravel laravel-4

我正在尝试将资源(“粉丝”)分解为单独的路由,这样我就可以为各个资源页面提供自定义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.谢谢。

1 个答案:

答案 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);