嗨我将路线5到8从1复制到4但是改变几乎所有内容包括路线名称和args,但是当我打电话时我尝试使用旧编辑旧的工作。 怎么了 ?它在我的路线?
如果我删除旧的有效,但是现在这不是一个选项,我必须保留两者。
/*edit old*/
Route::get('programacao/{localizacao}/{anoatual}/{cliente}/{programacao}/{item}/edit', array('as' => 'programacao.edit', 'uses' => 'ProgramacaoController@edit'));
Route::post('programacao/atualizar', array('as' => 'programacao.update','uses' => 'ProgramacaoController@update'));
Route::get('programacao/{localizacao}/{anoatual}/{cliente}/{programacao}', array('as' => 'programacao.show', 'uses' => 'ProgramacaoController@show'));
Route::post('programacao/atualizarinfo', array('as' => 'programacao.updateinfo','uses' => 'ProgramacaoController@updateinfo'));
/*edit new*/
Route::get('programacao/{go}/{localizacao}/{cliente}/{ano}/{item}/edicao', array('as' => 'programacao.edicao', 'uses' => 'ProgramacaoController@edicao'));
Route::post('programacao/atualizacao', array('as' => 'programacao.atualizacao','uses' => 'ProgramacaoController@atualizacao'));
Route::get('programacao/{go}/{localizacao}/{cliente}/{ano}', array('as' => 'programacao.mostrar', 'uses' => 'ProgramacaoController@mostrar'));
Route::post('programacao/atualizarinformacao', array('as' => 'programacao.updateinformacao','uses' => 'ProgramacaoController@updateinformacao'));
请求帮助
答案 0 :(得分:1)
问题在于Laravel ......
programacao/{go}/{localizacao}/{cliente}/{ano}
和
programacao/{localizacao}/{anoatual}/{cliente}/{programacao}
是相同的网址
programacao/{param1}/{param2}/{param3}/{param4}
最简单的方法是改变不同路线的非动态部分(不是参数的部分)。
以下是一个例子:
Route::get('programacao-new/{go}/{localizacao}/{cliente}/{ano}', ...)
Route::get('programacao/{localizacao}/{anoatual}/{cliente}/{programacao}', ...)
(显然你会选择更具描述性的东西-new
)
或者,您可以使用正则表达式来限制路径参数。
我认为ano
是一年,所以我们只过滤数字:
Route::get('programacao/{go}/{localizacao}/{cliente}/{ano}', array(
'as' => 'programacao.mostrar',
'uses' => 'ProgramacaoController@mostrar'
))->where('ano', '[0-9]+');
正如您所看到的,我添加了where()
和仅用于数字的正则表达式。
这意味着如果您输入网址programacao/foo/bar/test/2015
,则会使用programacao.mostrar
路由。如果第4个参数包含的不是数字,则将使用programacao.updateinfo
。
注意 更受限制的路由(在这种情况下为programacao.mostrar
)需要在之前声明其他路由。因为Laravel按照他们注册的顺序浏览路线。