2

我遇到一个错误:

Some mandatory parameters are missing ("users") to generate a URL for route "users.update".

我的观点是这样的:

{{ Form::open( array('action' => array('UsersController@update')) )  }}

         <div>  {{ Form::label('username', 'Username:') }}
            {{ Form::text('username', $user->username , array('class' => 'form-control')) }}</div> 

             <div>  {{ Form::label('email', 'Email Address:') }}
            {{ Form::text('email', $user->email , array('class' => 'form-control')) }}</div> 

            <div>  {{ Form::label('new_password', 'New Password:') }}
            {{ Form::text('new_password', '', array('class' => 'form-control')) }} </div> 

             <div>  {{ Form::label('old_password', 'Old Password:') }}
            {{ Form::text('password', '', array('class' => 'form-control')) }} </div>

            {{ Form::submit() }}


{{ Form::close() }}

我的控制器中还有一个链接到更新的功能:

public function update() {
        return 'This is an update';
    }

最后,当我检查 Artisan 命令中所有可用的路由时,我发现更新有一个路由到:users/{users}

我的代码有什么问题?我正在尝试更新用户并引发此错误。

4

3 回答 3

0

您打开 FORM 的方式需要一个路由参数。如果您不想传递参数,只需使用以下内容:

{{ Form::open(array('action' => 'UsersController@update')) }}

代替:

{{ Form::open( array('action' => array('UsersController@update')) )  }}
于 2013-10-10T11:09:18.783 回答
0

您的路线以期望传递变量 $users 的方式定义。因为:{users}

相反,您应该将其定义为:

Route::post('users/update', 'UsersController@update');

然后在您的函数 update() 中通过以下方式获取 post 变量:

$users_data = Input::get();

或者

如果要保留参数,请通过传递附加参数重新定义表单:

{{ Form::open( array('action' => array('UsersController@update', $id)) ) }}
于 2013-10-10T11:10:35.443 回答
0

即使你正在设置一个动作,你可能仍然需要一个路由。我强烈建议您始终使用 CLEARED DEFINED 路由到您的控制器。看看资源控制器是否对您有帮助,以防您不想定义每条该死的路线(我不想)。

最后回答你的问题:我认为

    {{ Form::open(array('action' => 'UsersController@update')) }}

...可以解决您的问题。希望能帮助到你。对不起,我的英语不好!:D

于 2013-10-10T11:16:43.617 回答