使用内部控制器中的$ _GET变量

时间:2015-03-30 13:09:48

标签: php arrays laravel

我正在使用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 {

3 个答案:

答案 0 :(得分:3)

Laravel将请求映射到对象以过滤您不应在控制器中直接使用$_GET的输入。

$name = Request::input('name');

http://laravel.com/docs/5.0/requests

答案 1 :(得分:1)

您可以使用Input::get()检索任何HTTP谓词的输入值。

for laravel 4 documentation

检查bogartalamid

的答案
$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
//                              ^