Laravel - 如何在返回重定向中使用变量?

时间:2014-11-21 16:01:26

标签: php laravel laravel-4

我是laravel的新手,我正试图玩它的功能。但是,我坚持能够使用$username变量

在我的UserController课程中,我有以下方法:

public function handleRegister()
{
    $user = new User();
    $user->email = Input::get('email');
    $user->username = Input::get('username');
    $user->password = Hash::make(Input::get('password'));
    $user->save();
    return Redirect::to('login')->withInput(array('username', $user->username));
}

我的代码的这部分工作完美,因为当我var_dump(Input::Old())使用'Jon'作为用户名时,/ login返回以下内容:

array(2) { [0]=> string(8) "username" [1]=> string(3) "Jon" }

对于/ login的用户名输入字段,我尝试使用以下值:

value="{{ Input::old('username') or '' }}"

但是,输入字段的值始终为''。

我做错了什么?

更新

将返回值转换为以下内容后:

return Redirect::to('login')->withInput(Input::only('username'));

并尝试检索值:

value="{{ Input::old('username') }}

而不是'Jon',用户名字段的值设置为1。

我不知道为什么。

1 个答案:

答案 0 :(得分:1)

您正在发送变量"输入"使用魔术功能"使用",并且您正在影响此变量的数组,因此在刀片模板中,您可以使用以下代码访问它:

// If you want to keep the recent post inputs, use withInput without parameters
return Redirect::to('login')->withInput();
// and then use this code to echo it
 {{ Input::old('username') }}

但是我觉得如果你像这样使用Laravel的From和模型绑定会更好:

{{ Form::model($user, array('route' => array('user.update', $user->id)))
    {{ Form::label('username', 'Username : ') }}
    {{ Form::text('username') }}
{{ Form::close() }}

此处用户将绑定到路径中具有id的对象,例如:users/1 Laravel将获取id为1的用户并将其绑定到您的表单。但是,如果我们谈论身份验证或创建,那么就不需要模型绑定,只需使用laravel的形式:

{{ Form::open(array('route' => array('yourRouteName')))
    {{ Form::label('username', 'Username : ') }}
    {{ Form::text('username') }}
{{ Form::close() }}

请注意,您可以在路径中使用模型绑定,因此当您可以直接在控制器中访问对象时,例如,我想编辑和对象,并且遵循RESTFul体系结构,我将会有以下内容:路线:

Route::put('users/{id}', array('as' => 'users.update', 'uses' => 'UserController@update'));

然后在控制器中,我将尝试检索在URL中传递了id的用户,但是在使用模型绑定时,我会在控制器中获取用户对象,您可以这样做,首先,改变您的路线:

// we create a model binding
Route::model('user', 'User');
// and we use it in our route instead of the id
Route::put('users/{user}', array('as' => 'users.update', 'uses' => 'UserController@update'));

现在在我们的控制器中,我们可以接受用户,并为该对象做任何我们想要的事情:

public function update($user)
{
    var_dump($user);
}

现在,如果您有以下链接:users/4,则会自动获取ID为4的用户。