2

データベースの行を編集しようとしています。以下のようにコンテンツを含む編集フォームを読み込もうとしましたが、エラーが表示されたようです:

@extends('master')
    @section('content')
        <h1>Compare Ages</h1>   

        {{ Form::open(array('action' => 'MatchesController@update')) }}


            {{ Form::label('n1label', 'Person 1: ') }}
            {{ Form::text('name1', $match->name1) }}<br/>
            {{ Form::label('v1label', 'Age: ') }}
            {{ Form::text('val1', $match->val1) }}<br/><br/>

            {{ Form::label('n2label', 'Person 2: ') }}
            {{ Form::text('name2', $match->name2) }}<br/>
            {{ Form::label('v2label', 'Age: ') }}
            {{ Form::text('val2', $match->val2) }}<br/><br/>

        {{ Form::submit('Update Pair') }}

        {{ Form::close() }}

    @stop

これは、編集および更新メソッド用にコントローラーにあるものです。

public function edit($id)
{
    print_r(Mydata::find($id));
    return View::make('matches.edit')

        ->with('title', 'Edit Match')
        ->with('match', Mydata::find($id));

}

public function update($id)
{

    $input = Mydata::where('id', Mydata::find($id));
    $new_input = array(
        'name1'=>Input::get('name1'),
        'val1'=>Input::get('val1'),
        'name2'=>Input::get('name2'),
        'val2'=>Input::get('val2')
        );
    $input->update($new_input);


    return Redirect::to('matches')
    ->with('message', 'Match updated successfully!');

}

マッチ/編集フォームにコンテンツをロードし、ルートマッチ/更新を使用して編集後に保存し、更新されたデータでマッチ/ $idにリダイレクトする方法を教えてください

4

3 に答える 3

3

これは、ID を必要とする機能に関係していると思います。フォームのオープン呼び出しで更新されるアイテムの ID を含める必要があると思います。

おそらくテイラーがここで言及しているようなものです: https://github.com/laravel/framework/issues/844#issuecomment-15996265

またはここで彼らが言うこと: Laravel 4: パラメータとして Url クラスに渡すものは? . (これはもちろん URL クラスの場合ですが、Form クラスの場合も同様であると思います)

編集:

わかりました。'action' パラメータを使用した場合に Form::open によって呼び出されるフォームの 'getControllerAction' 関数のコードを次に示します。

/**
 * Get the action for an "action" option.
 *
 * @param  array|string  $options
 * @return string
 */
protected function getControllerAction($options)
{
    if (is_array($options))
    {
        return $this->url->action($options[0], array_slice($options, 1));
    }

    return $this->url->action($options);
}

そのため、コントローラー アクション用に渡された配列の最初の要素を取得し、残りをオプションとして使用しているように見えます。したがって、あなたはただ行くことができるはずです:

{{ Form::open(array('action' => 'MatchesController@update', 'id' => $match->id)) }}

幸運を :)

于 2013-06-10T09:36:18.020 に答える