我正在使用Laravel 5.如何在控制器中使用$ _GET变量?这是我的HTML;
<form class="form-horizontal" role="form" method="GET" action="http://127.0.0.1:8080/contracts/refine">
<div class="form-group">
<label class="col-md-4 control-label">Postcodes:</label>
<div class="col-md-6">
<select name="postcode_dataset_id">
<option value="1">February 2015</option>
<option value="2">May 2015</option>
<option value="3">August 2015</option>
</select>
</div>
</div>
<div class="form-group">
<div class="col-md-6 col-md-offset-4">
<button type="submit" class="btn btn-primary" style="margin-right: 15px;">Load</button>
</div>
</div>
</form>
当我提交表格时,它会转到我的route.php;
Route::get('/contracts/refine', ['as' => 'postcodes-dataset-refine', 'uses' => 'ContractsController@refine']);
现在我想在我的Controller方法中获得表单的结果,所以我实际上可以使用它!到目前为止,我的控制器中的精炼方法中有这个;
public function refine()
{
print $_GET['postcodes_dataset_id'];
}
但我一直收到这个错误,我不知道这意味着什么
ErrorException in ContractsController.php line 44:
Undefined index: postcodes_dataset_id
我试着通过去;
来定义它public function refine()
{
$postcodes_dataset_id = "";
print $_GET['postcodes_dataset_id'];
}
但这没有任何作用!
UPDATE - 这是我的控制器的顶部..只是为了向您展示我已注册的命名空间;
<?php namespace App\Http\Controllers;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Models\Contract;
use App\Models\PostcodeLookup;
use App\Models\Location;
use App\Models\Lookup;
//use Illuminate\Database\Schema\MySqlBuilder;
use Illuminate\Http\Request;
class ContractsController extends Controller {
答案 0 :(得分:3)
Laravel将请求映射到对象以过滤您不应在控制器中直接使用$_GET
的输入。
$name = Request::input('name');
答案 1 :(得分:1)
您可以使用Input::get()
检索任何HTTP谓词的输入值。
for laravel 4 documentation
的答案$name = Input::get('postcodes_dataset_id');
for laravel 5 document
$name = Request::input('postcodes_dataset_id');
答案 2 :(得分:1)
您绝对应该使用Request
类检索输入。
使用立面:(确保在课程顶部添加use Request;
)
echo Request::input('postcode_dataset_id');
或者通过注入请求:
public function refine(\Illuminate\Http\Request $request)
{
echo $request->input('postcode_dataset_id');
}
此外,你似乎也有拼写错误。
postcode_dataset_id !== postcodes_dataset_id
// ^