使用laravel 4.2的漂亮URL


Pretty URL using laravel 4.2

我正在使用Laravel(第一次用户)创建一个网站,我已经设法有URL,如

localhost/branch/pass

所以在传递结束时不使用。php。但是我想要实现的是,当用户访问"pass"页面时,他们应该带一个令牌,这是通过电子邮件发送的,所以他们应该这样访问它…

localhost/branch/pass?token=blah

我想让URL看起来像…

localhost/branch/pass/blah

我以前在。htaccess中实现了这一点,而不使用laravel,我只是想知道laravel是否有自己的方式来做到这一点,或者它会和我以前做的一样吗?

提前感谢!

在您的Routes文件中,我们可以使用路径中的{}来过滤动态属性。由于这是GET请求,我们可以只使用Route::get

Route::get('branch/pass/{token}', 'MyController@MyFunction');

那么你可以在邮件中适当地设置你的URL,如:

http://localhost/branch/pass/blah

和作为令牌的blah将作为参数传递给您在控制器中声明的函数。

在Laravel中不需要修改你的。htaccess文件,因为它会在内部处理。

创建你的路由

Route::get('branch/pass/{token}', array('uses' => 'YourController@yourFunction', 'as' => 'passwordRoute'));

这里需要注意的一点是,我命名了通往passwordRoute的路由。你可以把名字改成任何你想要的。我觉得这非常有用,因为以后如果你需要修改路由,只要名称保持不变,你就总能通过它的名称找到它。

创建你的函数,你可能已经有了。

class YourController extends BaseClass {
    public function yourFunction($token)
    {
        // Do stuff with your token.
    }
}

现在你可以很容易地通过使用URL::route()和传入路由的名称来创建这个路由的url。

URL::route('passwordRoute', array('token' => $token));

在这里,我们用已经定义的名称调用路由。这将获取路由,看到路由需要token的参数,然后用存储在$token变量中的任何内容替换token参数。当然,您的变量可能会有所不同,您可能需要将$token更改为用于存储实际令牌的任何变量。

在您的例子中,它将是设置为blah的任何变量。

此函数将根据路由和参数输出您正在查找的URL。