Laravel 4:Input :: get()不起作用

时间:2015-01-13 17:51:49

标签: php laravel-4

使用CentOS 7在我的生产服务器中发生了一些奇怪的事情,问题是......在我的本地环境中我有许多使用Laravel 4开发的应用程序并且安装在CentOS 6.5或7等服务器上并且运行良好但这是不在这部分工作:

  • 我无法使用Input :: get(' my_get_variable')获取变量;既不在控制器中也不在视图中,因为总是返回NULL。

我真的不知道发生了什么,希望你能帮助我。

它无法使用表格或不使用它在网址中手动执行。

查看表单

{{ Form::open(array('method' => 'GET', 'action' => 'CompanyController@search', 'class' => 'f-search')) }}
    <input type="search" id="search-text" name="s" class="form-control input-lg" placeholder="Buscar empresas..." required>
    <select id="search-category" name="c" class="form-control input-lg">
        <option value="">Categoría</option>
        @foreach ($categories as $category)
            <optgroup label="{{ $category->name }}" id="{{ $category->id }}">
                @foreach ($category['subcategories'] as $subcategory)
                <option value="{{ $subcategory->id }}" id="{{ $subcategory->id }}">{{ $subcategory->name }}</option>
                @endforeach
            </optgroup>
        @endforeach
    </select>
    <input type="submit" class="btn btn-lg btn-primary" value="Buscar">
{{ Form::close() }}

路线

Route::get('/buscar','CompanyController@search');

控制器

//Search
public function search()
{
    $term = Input::get('s');
    $category = Input::get('c');

    var_dump($term);
    var_dump($category);
}

更新

当我使用$ _GET [&#39; s&#39;]代替Laravel get函数时,它会返回:未定义的索引:s

第二次更新

我将GET更改为POST,现在工作正常,但Idk为什么不使用GET。

感谢那些试图解决这个问题的人!

3 个答案:

答案 0 :(得分:2)

我认为问题在于服务器上的.htaccess文件。 RewriteRule没有正确完成。找到类似的行并修复如下。

RewriteRule ^(.*)$ /index.php?/$1 [QSA]

[QSA]是更改的部分

答案 1 :(得分:0)

{{ Form::open(array('method' => 'GET', 'action' => 'CompanyController@search', 'class' => 'f-search')) }}

尝试更改'action' =&gt; 'buscar'

答案 2 :(得分:0)

我刚刚使用以下设置在本地进行了测试:

// routes.php
Route::get("/test", "AppController@test");

// AppController.php
public function test() { 
  print_r(Input::get("test"));
  return View::make("test");
}

// test.blade.php
<form method="GET" action="{{ URL::to("test")}} ">
  <input type="text" name="s" class="form-control">
  <input type="submit">
</form>

Submit后,网址将更改为localhost/sotests/test?s=test,页面将返回&#34; test&#34;打印在表格上方。

有些更改,我使用URL::to("test")作为我的操作。我不知道这是否能解决你的问题,但它对我来说就像一个魅力。除此之外,我也没有使用Laravel的Form课程,但我认为这不会有所作为。

请告诉我这是否适合您!