PHP Laravel扩展了资源路由

Bra*_*ton 0 php laravel laravel-4

Laravel路由功能允许您命名资源并命名控制器以配合它.我是Laravel的新手,想知道是否有人知道如何在提供的路由类中扩展资源方法.

基本上说我有:(哪个工作正常)

/invoices
Run Code Online (Sandbox Code Playgroud)

但是说我想要:

/invoices/status/unpaid
Run Code Online (Sandbox Code Playgroud)

这怎么可以实现?

要查看我正在做的基础知识,请查看:http: //laravel.com/docs/controllers#resource-controllers

fid*_*per 7

资源控制器将您绑定到特定的URL,例如:

  • GET | POST /invoices
  • GET | PUT /invoices/{$id}
  • 得到 /invoices/create
  • 记录在案.

按照惯例,GET /invoices由于用于列出所有发票,您可能需要添加一些过滤:

/invoices?status=unpaid - 然后您可以在代码中使用它

<?php

class InvoiceController extends BaseController {

    public function index()
    {
        $status = Input::get('status');
        // Continue with logic, pagination, etc
    }

}
Run Code Online (Sandbox Code Playgroud)

如果您不想通过查询字符串使用过滤,在您的情况下,您可以执行以下操作:

// routes.php
Route::group(array('prefix' => 'invoice'), function()
{
    Route::get('status/unpaid', 'InvoiceController@filter');
});

Route::resource('invoice', 'InvoiceController');
Run Code Online (Sandbox Code Playgroud)

这可能会在订单路线创建时起作用.匹配的第一个路由将是用于完成请求的路由.