laravel 4-call_user_func_array()

时间:2014-04-21 15:52:35

标签: php html symfony laravel

我正在尝试在数据库中插入一些数据。我创建了包含所有字段和控制器的表单。 CarController.php

public function create() {
        // load the create form (app/views/pages/create.blade.php)
        return View::make('pages.create');
    }

    public function store() {

            // store
            $data = new Car;
            $data->id = Input::get('id');
            $data->save();

            // redirect
            Session::flash('message', 'Successfully created data!');
            return Redirect::to('pages/cars');

    }

routes.php文件

Route::resource('cars', 'CarController');
Route::post('desc', array('uses' => 'CarController@show'));
Route::post('create', array('uses' => 'CarController@create'));
Route::post('store', array('store' => 'CarController@store'));

create.blade.php

 {{ Form::open(array('url' => 'store', 'class'=>'form-horizontal')) }}
            <div class="form-group">
                {{ Form::label('id', 'Vehicle ID',array('class'=>'control-label col-lg-4')) }}
                <div class="col-lg-8">
                {{ Form::text('id', Input::old('textId'), array('class' => 'form-control', 'placeholder'=>'Vehicle ID')) }}
                </div>
            </div>             
            {{ Form::submit('Create the Car!', array('class' => 'btn btn-primary')) }}
        </div>

问题是它显示以下错误: 期望参数1是有效的回调,没有给定的数组或字符串 我不知道我做错了什么因为我是laravel的新人

2 个答案:

答案 0 :(得分:0)

在route.php文件中更改此行

Route::post('store', array('store' => 'CarController@store'));

Route::post('uses', array('uses' => 'CarController@store'));

&#39;使用&#39;指定访问路径时要调用的函数

答案 1 :(得分:0)

您正在使用资源控制器,这就是为什么您只需要一个路由声明,例如:

Route::resource('cars', 'CarController');

您还宣布了以下路线:

Route::post('desc', array('uses' => 'CarController@show'));
Route::post('create', array('uses' => 'CarController@create'));
Route::post('store', array('store' => 'CarController@store'));

实际上,您不需要这些路由声明,只需使用第一个路由,这将为您的资源控制器创建路由。例如,您的路线将如下所示:

Method |   Url         | Action | Route Name
--------------------------------------------
GET    | /cars/create  | create | cars.create // domain.com/cars/create using GET
POST   | /cars         | store  | cars.store  // domain.com/cars using POST

还有更多,您应该查看Resource Controllers。在这种情况下,您的控制器中有两种方法,如果您使用url yourdomain.com/cars/create使用GET方法(如果您从浏览器的地址栏导航),那么它&# 39; ll调用create方法,如果您使用form方法向POST提交yourdomain.com/cars,那么它将调用store方法和所有方法表单字段将在$_POST数组中提供,您可以使用Input::get('id')获取id字段的值。检查文档以获取更多信息。