1

プロジェクトの合計投票数でデータベースの列を更新しようとしています。404 問題が発生していますが、ルートに問題はありません。(PS: Laravel 3)

これは、すべてのプロジェクトの私の投票ボタンです:

{{ Form::open('project/addvote', 'VOTE') }}
{{ Form::hidden('id', $project->id) }}
{{ Form::submit('Vote') }}
{{ Form::close() }}

したがって、投票ボタンをクリックすると、次のルートが使用されます。

Route::put('project/addvote', array('uses'=>'projects@addvote'));

そして、これはプロジェクトコントローラーでの私のアクションです(まだ更新せず、リダイレクトしようとしているだけです):

public function put_addvote(){
        return Redirect::to_route('project', $id)
        ->with('message', 'Vote successful');
}

このルートにリダイレクト:

Route::get('project/(:num)', array('as'=>'project', 'uses'=>'projects@project'));

そして、これは私に404エラーを引き起こしています

ここでのすべての応答と大きな助けに感謝します!

4

1 に答える 1

1

実際にRedirect::to_routeは、ルートの名前がそれにリダイレクトされることを期待しており、名前付きルートは次のように名前で宣言する必要があります。

Route::put('project/addvote', array('as' => 'project', 'uses'=>'projects@addvote'));

したがって、その名前を使用して、次のようにリダイレクトできます

return Redirect::to_route('プロジェクト'); ここでは、projectを使用してその名前として使用されてい'as' => 'project'ます。あなたの例では、ルートに名前を付けていませんでした。

Route::put('project/addvote', array('uses'=>'projects@addvote')); as => 'route_name'欠落しています。

2番目の質問については、次のように行うことができます

$id = Input::get('id');
Project::find($id);
Project->votenumber = 5;
Project->->save();

モデルの挿入と更新.

アップデート :

少し混乱しましたが、コメント システムを介した会話の後、ルーティングの答えを以下に示します。

あなた(OP)は、次のように宣言されたルートがあると述べました

 Route::get('projets', array('as'=>'projets', 'uses'=>'projets@index'));

これを使用してリダイレクトしようとしているこのルートに

return Redirect::to_route('project', $id);

したがって、パラメーターを渡していますが、それはルート宣言にありません。これが問題です。これを克服するには、ルート宣言をこれに変更します

Route::get('projets/(:num)', array('as'=>'projets', 'uses'=>'projets@index'));

または

Route::get('projets/(:any)', array('as'=>'projets', 'uses'=>'projets@index'));

または、次のように、を使用して param をオプションにすることもできます?

Route::get('projets/(:any?)', array('as'=>'projets', 'uses'=>'projets@index'));

ワイルドカード Routes を確認してください

アップデート :

とにかく、元のコードを質問とともに投稿する必要がありました。これを変える

return Redirect::to_route('project', $id);

return Redirect::to_route('project', array($id));
于 2013-09-05T02:41:07.413 に答える