php - Laravel 重写命名路由并采用错误的路由

标签 php laravel laravel-4

我在我的 routes.php 文件中定义了这个

Route::post('gestionAdministrador', array('as' => 'Loguearse', 'uses' => 'AdministradorController@Login'));

Route::post('gestionAdministrador', array('as' => 'RegistrarAdministrador', 'uses' => 'AdministradorController@RegistrarAdministrador'));

在我的 login.blade.php 文件中,表单是这样开始的

{{ Form::open(array('route'=>'Loguearse'))}}

我不知道为什么当我提交表单时采用第二条路线而不是第一条路线,即使我指向第一条路线。

必须有一种方法可以从两种不同的形式转到相同的 url,这就是我想要的。

最佳答案

如果您有两个具有完全相同的 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 中重定向很容易,在你的 Controller 中,在处理你的表单之后,在你的任何方法中你可以:

return Redirect::to('/');

return Redirect::route('home');

有这样一条路线:

Route::get('/', array('as' => 'home', 'uses' => 'HomeController@index'));

因此,您的 Controller 将如下所示:

class AdministradorController extends Controller {

    public function RegistrarAdministrador() 
    {
        ...

        return Redirect::route('home');
    }

    public function Login() 
    {
        ...

        return Redirect::route('home');
    }
}

关于php - Laravel 重写命名路由并采用错误的路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22467677/

相关文章:

php - 如何使用 php 跟踪相关 View

php - 拉维尔 5 : Creating new models in controllers

php - 如何在 Laravel 中设置日志旋转?

laravel-4 - 如何通过在 Laravel 中预先加载来按另一个表连接订购

php - 对模型/实体含义以及 CRUD 和业务逻辑分离感到困惑

php 注册,无法正常工作。

php - 调用未定义的方法 Illuminate\Database\Schema\MySqlBuilder::dropForeign()

php - 如何将 Laravel 应用程序部署到 digital ocean 数据库和服务器?

php - 在 Laravel 4 中将尾部斜杠附加到 url

javascript - HTML/JS - 创建 "double-level"的 anchor