Laravel更新数据库路由

时间:2013-09-05 02:09:00

标签: php laravel laravel-3

我正在尝试使用项目的总票数更新数据库中的列。我遇到了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错误

感谢每一个回复和这里的大力帮助!

1 个答案:

答案 0 :(得分:1)

实际上,Redirect::to_route期望路由的名称重定向到它,并且必须使用名称声明命名路由,例如

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

因此,您可以使用它;名称可以像

一样重定向到它

返回Redirect :: to_route('project'); 此处,project已使用'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();

Inserting & Updating Models

更新:

这有点让人困惑但是在通过评论系统进行对话后,路由的答案如下:

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

Check wildcard Routes

更新:

你应该用问题发布原始代码,无论如何,改变这个

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

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