LARAVEL使用单一形式进行编辑和插入操作

时间:2015-02-28 15:55:40

标签: php laravel laravel-4 laravel-routing

在我的应用程序中,我希望简化表单并更改Form::model以同时使用更新和插入,为了具备此功能,我创建此route:controller以显示视图并对其进行修改:< / p>

Route::controller(
    'customers' , 'customersController',
    array(
        'getIndex'  =>'customers.index',
        'postUpdate'=>'customers.update'
    )
);

customersController控制器类:

<?php
class customersController extends \BaseController
{
    public function getIndex()
    {
        if ( Auth::check() ){
            $customers = new Customers;
            return View::make('layouts.customers')->with('customers', $customers);
        }
        return Redirect::route('dashboard');
    }
    public function postUpdate($id)
    {
        print_r( $id);
        die;
    }
}

?>

getIndex我可以返回查看customers.blade.php,我可以创建一个新变量new Customers,在视图中我可以从创建的新实例创建下面的表单客户:

{{ Form::model($customers,array('route' => array('customers.update', $customers->id))) }}
...
{{ Form::submit('UPDATE', array('class'=>'btn btn-default btn-default-small') ) }}
{{ Form::close() }}

现在我想将表单值发送到controler,但是在发送之后我得到了这个错误:

错误:

 Missing argument 1 for customersController::postUpdate() 

1 个答案:

答案 0 :(得分:1)

视图中的表单必须与此代码类似:

{{ Form::model($customers,array('route' => array('customers.update', $customers->id))) }}

并且您的Form::text必须与:

一样
{{ Form::text('name', $customers->name, array('class'=>'form-control rtl' ) ) }}

路线:

Route::controller(
    'customers', 'customersController',
    array(
        'getIndex' => 'customers.index',
        'postUpdate' => 'customers.update'
    )
);

现在在控制器中,您可以尝试使用此代码来检测表单是更新还是插入

public function postUpdate()
{
    if (Input::get('id')) {
        $customer = Customers::find(Input::get('id'));
    } else {
        $customer = new Customers;
    }
    ...
    ...
    ...
}