我正试图用一个项目的总票数更新数据库中的一列。我有一个404的问题,但在我的路线上看不到问题。(附言: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错误的
感谢每一个回应和这里的大力帮助!
Redirect::to_route
需要一个路由的名称重定向到它,并且命名路由必须用一个名称来声明,比如project
已被用作使用'as' => 'project'
的名称。在您的示例中,您没有为路线提供任何名称,此处as => 'route_name'
对于第二个问题,您可以将其作为
$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'));
或者,您可以使用?
使参数可选,例如:
Route::get('projets/(:any?)', array('as'=>'projets', 'uses'=>'projets@index'));
检查通配符路由。
更新:
return Redirect::to_route('project', $id);
至
return Redirect::to_route('project', array($id));