得到 “?拉拉维尔中的变量

2022-08-30 09:29:08

您好,我正在使用REST和Laravel创建一个API。

一切都如预期的那样好。

现在,我想映射一个GET请求,以使用“?”来识别变量。

例如:。domain/api/v1/todos?start=1&limit=2

以下是我的内容:routes.php

Route::any('api/v1/todos/(:num?)', array(
    'as'   => 'api.todos',
    'uses' => 'api.todos@index'
));

我:controllers/api/todos.php

class Api_Todos_Controller extends Base_Controller {

    public $restful = true;

    public function get_index($id = null) {
        if(is_null($id)) {
            return Response::eloquent(Todo::all(1));

        } else {
            $todo = Todo::find($id);
            if (is_null($todo)) {
                return Response::json('Todo not found', 404);
            } else {
                return Response::eloquent($todo);   
            }
        }
    }
}

如何使用 “?” 获取参数 ?


答案 1

看看_GET美元和_REQUEST美元的超级全球。如下所示的内容适用于您的示例:

$start = $_GET['start'];
$limit = $_GET['limit'];

编辑

根据laravel论坛中的这篇文章,您需要使用,例如,Input::get()

$start = Input::get('start');
$limit = Input::get('limit');

另请参见:http://laravel.com/docs/input#input


答案 2

在 5.3-8.0 中,引用查询参数,就好像它是 .Requestclass

1. 网址

http://example.com/path?page=2

2. 在路由回调或控制器操作中使用魔术方法 Request::__get()

Route::get('/path', function(Request $request){
 dd($request->page);
}); 

//or in your controller
public function foo(Request $request){
 dd($request->page);
}

//NOTE: If you are wondering where the request instance is coming from, Laravel automatically injects the request instance from the IOC container
//output
"2"

###3.默认值 我们还可以传入默认值,如果参数不存在,则返回该默认值。它比您通常与请求全局变量一起使用的三元表达式干净得多。

   //wrong way to do it in Laravel
   $page = isset($_POST['page']) ? $_POST['page'] : 1; 
   
   //do this instead
   $request->get('page', 1);
  
   //returns page 1 if there is no page
   //NOTE: This behaves like $_REQUEST array. It looks in both the
   //request body and the query string
   $request->input('page', 1);

###4.使用请求函数

$page = request('page', 1);
//returns page 1 if there is no page parameter in the query  string
//it is the equivalent of
$page = 1; 
if(!empty($_GET['page'])
   $page = $_GET['page'];

默认参数是可选的,因此可以省略它

###5.使用请求::查询()

当输入法从整个请求负载(包括查询字符串)中检索值时,查询方法将仅从查询字符串中检索值

//this is the equivalent of retrieving the parameter
//from the $_GET global array
$page = $request->query('page');

//with a default
$page = $request->query('page', 1);
 

###6.使用请求外观

$page = Request::get('page');

//with a default value
$page = Request::get('page', 1);

您可以在官方文档中阅读更多内容 https://laravel.com/docs/5.8/requests


推荐