使用通配符的Laravel 4模式过滤器



我上周开始使用Laravel 3,然后发现了新的4版本,我现在正试图转换。

我有十几条路由,我想传递给一个特定的控制器方法。例如,"/api/v1/owners/3/dogs/1或/api/v1/owners/3"来运行"myresourcecontroller@processRequest"

在Laravel 3中,我可以使用这个:(注意*通配符)

Route::any('api/v1/owners*', 'owners@processRequest'); // Process tags resource endpoints

我从文档中找到这个例子,但它给了我一个错误。我得到一个NotFoundHttpException。

//[Pattern Based Filters](http://laravel.com/docs/routing#route-filters)
Route::filter('admin', function()
{
    //
});
Route::when('admin/*', 'admin');

不确定我做错了什么?还有别的办法吗?

我不想使用Laravel 4 restful控制器,因为它们似乎不符合完整的restful设计。例如,url中没有动词。

我已经写好了所有的处理,我只需要能够路由到它。我需要能够通过POST/api/v1/owners或/api/v1/owners/3/dogs创建新记录我不能使用/api/v1/owners/create.

我试图避免为每个端点编写路由,即

Route::any('api/v1/owners/{owner_id}', 'owners@processRequest');
Route::any('api/v1/owners/{owner_id}/dogs/{dog_id}', 'owners@processRequest');

感谢您的帮助

您应该利用资源丰富的控制器,因为它们是构建API时的重要资产。您所描述的端点可以使用资源控制器和嵌套的资源控制器来实现。

Route::resource('owners', 'OwnersController');
Route::resource('owners.dogs', 'OwnersDogsController');

将允许您创建具有POST localhost/owners的主人,并在具有POST localhost/owners/3/dogs的主人上创建狗。

您可以将这些路由封装在路由组中以获得api/v1前缀。

Route::group(['prefix' => 'api/v1'], function()
{
    Route::resource('owners', 'OwnersController');
    Route::resource('owners.dogs', 'OwnersDogsController');
});

我自己没有使用Laravel,但尝试any('api/v1/owners/*',(注意星号之前的斜杠),如在示例中

相关内容

  • 没有找到相关文章