2016-05-07 36 views
0
從URL參數

我創建了一個URL字符串:檢索得到Laravel

http://SERVER/v1/responders?latitude=48.25969809999999&longitude=11.43467940000005 

路線:

Route::get('/responders', 'Responders\[email protected]'); 

和控制器:

public function index(Request $request) { 

    // Get Latitude and Longitude from request url 
    $latitude = $request["latitude"]; 
    $longitude = $request["longitude"]; 

    $responders = new Responder(); 

    if(!isset($latitude) & !isset($longitude)) { 
    } 

但結果是不是有什麼我期望。 URL字符串中的參數不用控制器進行分析。我是否用錯誤的方式解析它們?

我試圖轉儲我的輸入與dd($request->all());但輸出爲NULL。由於URL正確發送,我想知道數據丟失的位置。我的路線文件不正確?

更新 難道是我的nginx配置?

server { 
    listen 80 default_server; 
    listen [::]:80 default_server ipv6only=on; 

    root /var/www/mfserver/public; 
    index index.php index.html index.htm; 

    charset utf-8; 

    server_name SERVER; 

    location/{ 
     try_files $uri $uri/ /index.php?query_string; 
    } 

    error_page 404 /index.php; 
    error_page 500 502 503 504 /50x.html; 
    location = /50x.html { 
     root /var/www/mfserver/public; 
    } 

    location ~ \.php$ { 
     fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     fastcgi_pass unix:/var/run/php5-fpm.sock; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     include fastcgi_params; 
     fastcgi_intercept_errors off; 
     fastcgi_buffer_size 16k; 
     fastcgi_buffers 4 16k; 
    } 
} 
+1

[獲取獲取可能的重複變量在laravel](http://stackoverflow.com/questions/15081090/getting-get-variable-in-laravel) – cb0

+0

你可以做一個'dd($ request-> all())'並顯示結果嗎? –

+0

結果是: 'array:1 [▼ 「query_string」=>「」 ]' – sesc360

回答

0

你在你的nginx配置一個錯字。在您的location定義中,您的query_string變量缺少前導$。因此,原始查詢字符串將被重寫爲query_string的純文本。這就是爲什麼你的請求數據在轉儲時顯示array:1 [▼ "query_string" => "" ]

更新你的配置到: 「?」

location/{ 
    try_files $uri $uri/ /index.php?$query_string; 
} 
1

試試這個:

$inputs = $request->all();

然後:

$latitude = $inputs['latitude']

$longitude = $inputs['longitude']

+0

我需要改變我的路線嗎?它不工作 – sesc360

+0

它應該工作。你遇到了什麼錯誤? – Abhishek

+0

當我'var_dump'我得到的輸入︰'array(1){[「query_string」] => string(0)}' – sesc360

0

這應該工作,使其適應您的需求。

public function index(Request $request) { 
    if(!$request->has('latitude') || !$request->has('longitude')) { 
     // code if one or both fields are missing 
    } 

    // Get Latitude and Longitude from request url 
    $latitude = (float)$request->input('latitude') ; 
    $longitude = (float)$request->input('longitude'); 

    // other code here 

}

+0

當我這樣做:'$ latitude =(float)$ request-> input('latitude');'結果爲空 – sesc360

0

最常見的方法是

$latitude = $request->input("latitude"); 
+0

這很奇怪......輸出爲NULL – sesc360

+0

您確定發送了緯度嗎?您可以看到當前請求的所有屬性,如下所示: dd($ request-> all()); – Pascal

+0

有趣..它是空的!但我的URL字符串包含它 'http:// SERVER/v1/responders?latitude = 48.25969809999999&longitude = 11.43467940000005 ' 我需要更改我的路由文件嗎? – sesc360