Laravel:我试图将一个变量从视图传递给控制器​​,但它返回null

时间:2015-05-29 20:35:13

标签: laravel view laravel-4 controller

这是我的视图代码当我执行应用程序时它只返回我的NULL值,基本上我的$ office_category没有被传递,我需要办公室类别来查询数据库

 <div class="box-body">
                {{ Form::open(['route' => 'office.index','class' => 'form-horizontal office-form']) }}    
                <div class="form-body">
                    <div class="form-group">

                <div class="col-md-3">
                {{ Form::select('office_category', [
                            null=>'Please Select',
                            'Software' => 'Software',
                            'Computer Hardware' => 'Computer Hardware',
                            'Survey Instruments' => 'Survey Instruments',
                            'Office Equipments' => 'Office Equipments'
                            ], isset($office_category) ? $office_category : '', ['class' => 'form-control input-xlarge select2me', 'placeholder' => 'Project Type', 'id' => 'office_category'] ) }}
                        </div>
                        {{ Form::hidden('office_category', $office_category) }}
                            {{ Form::submit('Search Equipment',['class' => 'btn green']) }}
                    </div>
                </div>
                {{ Form::close() }}

我的控制器代码:我想要Office类别

Class OfficeController extends BaseController{

public function index(){

    $office_category = Input::get('office_category');
    if($office_category=='')
        $offices = Office::orderBy('office_category', 'asc')
    ->get();
    else
        $offices = Office::where('office_category','=',$office_category)
                    ->get();

    $assets = ['table','datepicker'];
    $users = User::where('client_id','=','')
        ->orderBy('name','asc')
        ->lists('name','username');

    return View::make('office.index',[
            'office_category' => $office_category,
            'offices' => $offices,
            'users' => $users,
            'assets' => $assets

            ]);
}

我哪里出错了请帮帮忙。

3 个答案:

答案 0 :(得分:1)

您的select之后会有一个隐藏字段,其名称与select相同。此隐藏字段的值(空)是发送到服务器的内容。

删除此行:

{{ Form::hidden('office_category', $office_category) }}

或重命名此隐藏字段。

答案 1 :(得分:0)

默认情况下,Form::open creates a POST request和您在Index上的索引方法需要GET次请求。

您需要在routes.php上添加新路线以匹配此POST请求。

Route::post('index', 'OfficeController@index');

或者,如果您不介意,可以设置index来听取任何类型的请求:

Route::any('index', 'OfficeController@index');

答案 2 :(得分:0)

在大多数情况下,上述答案将解决您的问题。如果没有,您可以从浏览器检查您的Web请求并确认$ office_category变量中的值。