Laravel:我正在尝试将变量从视图传递到控制器,但它返回 null

Posted

技术标签:

【中文标题】Laravel:我正在尝试将变量从视图传递到控制器,但它返回 null【英文标题】:Laravel : I am trying to pass a variable from view to controller but it returns null 【发布时间】:2015-05-29 20:35:12 【问题描述】:

这是我的视图代码当我执行应用程序时它只返回 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

            ]);

我哪里出错了,请帮忙。

【问题讨论】:

【参考方案1】:

您的选择后直接有一个隐藏字段,该字段与该选择同名。这个隐藏字段(空)的值是发送到服务器的值。

删除这一行:

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

或者重命名这个隐藏字段。

【讨论】:

【参考方案2】:

默认情况下,Form::opencreates a POST request 和 Controller 上的索引方法期待 GET 请求。

您需要在routes.php 上添加一个新路由来匹配这个POST 请求。

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

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

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

【讨论】:

OP 没有提到 MethodNotAllowedHttpException 的 404。我不认为路线是问题。【参考方案3】:

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

【讨论】:

以上是关于Laravel:我正在尝试将变量从视图传递到控制器,但它返回 null的主要内容,如果未能解决你的问题,请参考以下文章

将数据从控制器传递到 Laravel 中的视图

如何从 Laravel 的控制器中传递变量到视图

将 JavaScript 数组从视图传递到 Laravel 控制器

将数据从控制器传递到刀片视图 laravel

将变量从页面视图控制器传递到另一个

将变量从控制器传递到邮件类 - Laravel