通过Laravel中的URL传递变量

时间:2014-02-21 21:12:22

标签: variables laravel laravel-routing

我是Laravel的新手,我正在努力完全理解路线的运作方式。我想通过URL传递变量。我明白我是怎么做到的,但我的问题有点不同:

routes.php文件

Route::get("/user/{user}", array(
    'as' => 'profile-user',
    'uses' => 'ProfileController@user'
    ));

ProfileController.php

类ProfileController扩展了BaseController {

public function user($user) {
    $user = User::where('username', '=', Session::get('theuser') );


    if($user->count()) {
        $user = $user->first();

        return View::make('layout.profile')
        ->with('user', $user);

    }

    return App::abort(404);
}


}

在我看来,简单地说:

{{ $user->username }}

现在我的问题:这有点工作,但按下按钮后,此URL将如下所示:

 [this is not a link](http://localhost/tutorial/public/index.php/user/%7Buser%7D)

如果我将URL编辑为

 [this is not a link](http://localhost/tutorial/public/index.php/user/Serban)

它做同样的事情。但我不希望手动编辑URL。如何在不编辑的情况下获取第二个URL行?

3 个答案:

答案 0 :(得分:2)

在构建表单时,请像这样传递user参数

Form::open(array('route' => array('route-name-for-update', $user->username)))

您也可以使用表格Model Binding(详情请参阅文档):

Form::model($user, array('route' => array('user.update', $user->username)))

此处,user.update是需要使用此名称为update方法定义的路由的路由名称。

答案 1 :(得分:1)

与此同时,对我来说更有趣的方法是做这样的事情:

  Route::group(array('prefix' => 'user/{user}'), function()
    {

        Route::get("/{char}", array(
            'as' => 'profile-user',
            'uses' => 'ProfileController@user'));
    }   
    );

控制器:

 public function user($user, $char) {
    $user = User::where('username', '=', Session::get('theuser') );
    $char = Character::where('char_name', '=', 'Cucu' );

    if($user->count()) {
        $user = $user->first();
        $char = $char->first();

        return View::make('layout.profile')
        ->with('user', $user)
        ->with('char', $char);

    }

    return App::abort(404);
}

只要按一下按钮,我就无法做到这样的事情

$logged_user = Session::get('theuser');
return Redirect::route('profile-user', $logged_user);

因为我无法在Redirect函数中放入2个参数。此代码将获取URL

  [this is not a link](http://localhost/tutorial/public/index.php/user/SerbanSpire)

显然不存在 正确的网址是

  [this is not a link]http://localhost/CaughtMiddle/tutorial/public/index.php/user/SerbanSpire/Cucu)

其中SerbanSpire是$ user,Cucu是$ char。我怎样才能获得正确的URL?

答案 2 :(得分:0)

当您链接到路线时,您需要将参数传递给路线,如此

{{ route('profile-user', 'Serban') }}