【问题标题】:Laravel 4 restful controller GET parameterLaravel 4 restful 控制器 GET 参数
【发布时间】:2013-11-14 05:58:26
【问题描述】:

为了给 GET 方法添加参数,我知道我必须在路由中添加{parameter},如下所示

Route::get('example/search/{id}', 'ExampleController@exampleMethod')

但是,有没有办法使用 RESTful 控制器来做到这一点,如下所示?

routes.php

Route::controller('example', 'ExampleController')

ExampleController.php

public function getSearch($id){
    //do something with $id
}

上述方法不起作用,因为routes.php 不希望getSearch 方法有参数。我想知道是否有办法解决这个问题而无需添加单独的Route::get 路由。

【问题讨论】:

    标签: php laravel laravel-4 laravel-routing


    【解决方案1】:
    <?php
    
    // ExampleController.php
    
    class ExampleController extends BaseController {
        public function getSearch($id = null){
            if ($id == null) {
                return 'no id';
            }
            return $id;
        }
    }
    
    // routes.php
    
    Route::controller('example', 'ExampleController');
    
    ?>
    

    php artisan routes:

    【讨论】:

    • 太棒了。但是 Laravel 4 中的“索引”方法的情况如何呢?即使定义为public function getIndex($id = null),请求URL domain.tld/example/1 也会抛出Controller method not found 错误。您必须为此定义单独的路线,例如Route::get('example/{id}', ['uses' =&gt; 'ExampleController@getIndex'])-&gt;where('id', '[0-9]+');注意:此路由声明应在您的 Route::controller 声明生效之前进行。
    • @vitalikaz 索引有一个非常具体的用途。它应该是应用程序中的索引页。因此,据我所知,它不应该通过设计来获取参数,因此您所做的是覆盖所需的默认行为。
    猜你喜欢
    • 2013-10-12
    • 2013-08-26
    • 2015-01-15
    • 1970-01-01
    • 1970-01-01
    • 2016-09-03
    • 1970-01-01
    • 2014-09-03
    • 1970-01-01
    相关资源
    最近更新 更多