laravel 路由在复制时不起作用
laravel routes not work when is copied
您好,我将路由 5 到 8 从 1 复制到 4,但更改了几乎所有内容,包括路由名称和参数,但是当我调用时,我尝试使用新编辑,旧编辑仍然有效。
怎么了 ?它在我的路线中?
如果我删除了旧的作品,但现在这不是一个选项,我必须保留两者。
/*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'));
感谢帮助
问题是 Laravel...
programacao/{go}/{localizacao}/{cliente}/{ano}
和
programacao/{localizacao}/{anoatual}/{cliente}/{programacao}
一样URL
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()
和仅用于数字的正则表达式。
这意味着如果您输入 URL programacao/foo/bar/test/2015
它将使用 programacao.mostrar
路线。如果第 4 个参数包含数字以外的内容,将使用 programacao.updateinfo
。
注意需要声明更受限制的路由(在本例中programacao.mostrar
)在 另一条路线之前。因为 Laravel 按照他们注册的顺序通过路由。
您好,我将路由 5 到 8 从 1 复制到 4,但更改了几乎所有内容,包括路由名称和参数,但是当我调用时,我尝试使用新编辑,旧编辑仍然有效。 怎么了 ?它在我的路线中?
如果我删除了旧的作品,但现在这不是一个选项,我必须保留两者。
/*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'));
感谢帮助
问题是 Laravel...
programacao/{go}/{localizacao}/{cliente}/{ano}
和
programacao/{localizacao}/{anoatual}/{cliente}/{programacao}
一样URL
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()
和仅用于数字的正则表达式。
这意味着如果您输入 URL programacao/foo/bar/test/2015
它将使用 programacao.mostrar
路线。如果第 4 个参数包含数字以外的内容,将使用 programacao.updateinfo
。
注意需要声明更受限制的路由(在本例中programacao.mostrar
)在 另一条路线之前。因为 Laravel 按照他们注册的顺序通过路由。