laravel-> on select change,提交给Controller show

rru*_*r81 5 php rest laravel blade

我肯定错过了什么.我正在尝试从选择中获取提交,以显示所选项目上的字段.

//the view
{{ Form::open(array('route' => 'user.show', 'name' => "frm_select_client")) }}

        {{Form::select('client_id', array('-1' => 'Please select...') + $usersperclient, null, array('class' => 'selectpicker', 'id' => 'client_id', 'name' => 'client_id', "onchange" => "document.frm_select_client.submit();") );}}

{{ Form::close() }}

//routes.php
Route::resource('user', 'UserController');
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种方法来放置URL user/id(user/1901)然后转到UserController :: show().我所看到的所有例子都直接来自节目的链接:

<a class="btn btn-small btn-success" href="{{ URL::to('user/' . $value->id) }}">Show this user</a>
Run Code Online (Sandbox Code Playgroud)

我知道我可以用javascript做到这一点,但我希望以最好的方式做到这一点,因为我可能会这样做很多.希望这很清楚.Thx提前!

编辑:我正在寻找一种方法来格式化表单提交以完成资源丰富的格式,在这种情况下(show/{id} for show).

The*_*pha 5

您必须使用JavaScript触发选择change事件,您可以尝试以下操作:

var select = document.getElementById('client_id');
select.addEventListener('change', function(){
    this.form.submit();
}, false);
Run Code Online (Sandbox Code Playgroud)

这将submitformon change事件,您也可以尝试以下操作:

var select = document.getElementById('client_id');
select.onchange = function(){
    this.form.submit();
};
Run Code Online (Sandbox Code Playgroud)

使用jQuery,您可以尝试以下操作:

$('#client_id').on('change', function(e){
    $(this).closest('form').submit();
});
Run Code Online (Sandbox Code Playgroud)

或者使用内联事件处理,您可以尝试以下操作(在属性数组中添加):

"onchange" => "this.form.submit()"
Run Code Online (Sandbox Code Playgroud)

上面的代码将产生如下内容:

<select onchange="this.form.submit()">
Run Code Online (Sandbox Code Playgroud)

要生成,url您可以使用以下代码:

{{ Form::open(array('url' => 'user/' . $user->id, 'name' => "frm_select_client")) }}
Run Code Online (Sandbox Code Playgroud)

另外,您可以这样使用route(假定user.show是url的路由名称user/{id}):

{{ Form::open(array('route' => array('user.show', $user->id), 'name' => "frm_select_client")) }}
Run Code Online (Sandbox Code Playgroud)

确保在加载表单时将$user对象传递给您view,方法如下(基本上来自Controller):

public function edit($id)
{
    $user = User::find($id);
    return View::make('userform')->with('user', $user);
}
Run Code Online (Sandbox Code Playgroud)

更新:

由于user id是从中动态选择的,select因此您必须使用JavaScript和设置表单actionid在这种情况下,您可以尝试以下方法:

// Add this line before you submit the form
this.form.action = 'user/' + this.value;
// Now submit
this.form.submit();
Run Code Online (Sandbox Code Playgroud)

或者使用jQuery您可以尝试以下操作:

$('#client_id').on('change', function(e){
    var select = $(this), form = select.closest('form');
    form.attr('action', 'user/' + select.val());
    form.submit();
});
Run Code Online (Sandbox Code Playgroud)

在这种情况下,请将表单保留为action空白,使用像这样的空白字符串url => ''