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'));

因此,您可以使用它的名称来重定向到它,就像

返回重定向::to_route('project'); 在这里,project已被用作它的名称 using 'as' => 'project'。在你的例子中,你没有给路线命名,这里

Route::put('project/addvote', array('uses'=>'projects@addvote')); 的,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'));

或者,您可以使用 a 使参数可选?,例如:

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 回答