Laravel4:双重路线

时间:2013-11-21 10:29:32

标签: laravel laravel-4 laravel-routing

对不起,如果听起来很奇怪,但在路线上,在我的观点的帖子上我需要做两个操作:

Route::post('booking', 'HomeController@booking');
Route::post('booking', function()
{
    return Queue::marshal();    
});

但是当然这样做我得到一个错误:数据无效。

然而,对于“预订”视图的帖子,我需要调用控制器的方法,同时返回Queue::marshal()

或许我可以做到这一点?

非常感谢!

修改

这是HomeController @预订方法:

http://paste.laravel.com/19ej

1 个答案:

答案 0 :(得分:1)

如果您使用相同的动词和网址定义两条路线,则第二条路线永远不会被解雇。

Route::post('booking', 'HomeController@booking'); // Laravel will find this route first
Route::post('booking', function()                 // so this function will never be executed
{
    return Queue::marshal();    
});

我看到您的HomeController@booking()正在处理表单。为什么你只能使用另一条路线?

Route::post('booking/create', 'HomeController@booking');

然后将表单action方法更改为指向此路线:

// this will render <form method="POST" action="http://yourdomain.com/booking/create"
{{ Form::open(array('action' => 'HomeController@booking')) }}

这样你就没有一条路线与另一条路线重叠。


与该问题无关的一些建议。看一下你的控制器,我注意到你在检查错误时这样做了:

if ( ! $errorCondition) {
  // do stuff
} else {
  // show errors
}

如果您这样写,您的代码将更容易阅读:

if ($errorCondition) {
   // return error
}

// do stuff