如果您有两条具有完全相同 URI 和相同方法的路由:
Route::post('gestionAdministrador', array('as' => 'Loguearse', 'uses' => 'AdministradorController@Login'));
Route::post('gestionAdministrador', array('as' => 'RegistrarAdministrador', 'uses' => 'AdministradorController@RegistrarAdministrador'));
当有东西碰到/gestionAdministrador时,Laravel 怎么知道它们之间的区别?
它总是假设第一个。
您设置的名称'as' => 'RegistrarAdministrador' 将用于基于该路由名称创建 URL,仅当某些东西(浏览器、curl...)点击该 URL 时,区分它们的唯一方法是通过
1) 网址
2) URL参数(基本上是1号加参数)
3) 方法(GET、POST)
因此您可以将它们更改为:
Route::post('gestionAdministrador/loguearse', array('as' => 'Loguearse', 'uses' => 'AdministradorController@Login'));
Route::post('gestionAdministrador/registrar', array('as' => 'RegistrarAdministrador', 'uses' => 'AdministradorController@RegistrarAdministrador'));
编辑 2
您真正需要了解的是,您给路由的名称 ('as' => 'name') 不会成为您的 url 的一部分,因此 Laravel 不能用它来区分您的两个 URl ,这仅供内部使用,用于在创建 URL 期间识别您的路由。所以,这些说明:
$loguearse = URL::route('Loguearse');
$registrar = URL::route('RegistrarAdministrador');
将生成完全相同的 URL:
http://yourserver.dev/gestionAdministrador
编辑 1 - 回复评论
在 Laravel 中重定向很容易,在您的控制器中,在处理完您的表单后,您可以使用任何方法:
return Redirect::to('/');
或
return Redirect::route('home');
有这样一条路线:
Route::get('/', array('as' => 'home', 'uses' => 'HomeController@index'));
因此,您的控制器将如下所示:
class AdministradorController extends Controller {
public function RegistrarAdministrador()
{
...
return Redirect::route('home');
}
public function Login()
{
...
return Redirect::route('home');
}
}