Laravel5.5 でURL直打ちのリクエストパラメーターを取得したい
お世話になっております。
リクエストパラメータが取得できず困っております。
設定に不足があるのだと思っております。
アドバイスをいただけましたら幸いです。
質問
URLに直打ちしたリクエストパラメーターを取得したい
http://example.com/hello?id=番号 <= 取得できない
http://example.com/hello/番号 <= 取得できた(※1)
やったこと
「Laravel入門 」書籍を参考に基本動作を学習しています。
/routes/web.phpファイル
Route::get('hello', 'HelloController@index');
// Route::get('hello/{id?}', 'HelloController@index'); // idが取得できる(※1)
/app/Http/Controllers/HelloController.phpファイル
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class HelloController extends Controller
{
//
public function index(Request $request)
{
// var_dump($request->id); // <= NULLになってしまう
// exit();
if (isset($request->id))
{
$param = ['id' => $request->id];
$items = DB::select('select * from people where id = :id',
$param);
} else {
$items = DB::select('select * from people');
}
return view('hello.index', ['items' => $items]);
}
}
参考テキスト
「PHPフレームワーク Laravel入門 Page.185 リスト5-7」
ISBN987-4-7980-5258-8
動作環境:
OS:Raspbian GNU/Linux 9 (stretch)
WEBサーバー:nginx version: nginx/1.10.3
PHPバージョン:PHP 7.2.9-1 (cli) (built: Aug 19 2018 06:56:13) ( NTS )
Laravelバージョン:
$ php artisan -V
Laravel Framework 5.5.42
よろしくお願いします。
kaz_dev
修正箇所
nginxの設定の記述ミスを修正しました。
修正前)
try_files $uri $uri/ /index.php?query_string;
修正後)
try_files $uri $uri/ /index.php?$query_string;
/etc/nginx/sites-available/defaultファイル
# Laravel ver5.5
location / {
root /var/www/path/to/public;
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
#try_files $uri $uri/ =404;
index index.php index.html index.htm;
try_files $uri $uri/ /index.php$query_string;
}
# pass PHP scripts to FastCGI server
#
location ~ \.php$ {
#location ~ [^/]\.php(/|$) {
root /var/www/path/to/public;
# CORS start
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods "POST, GET, OPTIONS";
add_header Access-Control-Allow-Headers "Origin, Authorization, Accept";
add_header Access-Control-Allow-Credentials true;
# CORS end
# include snippets/fastcgi-php.conf;
#
# # With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
# # With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}