我是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。
我不知道为什么。
答案 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的用户。