Laravel 5.1 如何将数据从视图传递到模态框中

3
如何将数据从Blade视图传递到模态对话框中: 例如: 我从控制器将$user传递到视图中:
 $user = User::findOrFail($id);
 return view('user.show')->withUser($user);

接下来,我希望通过这样的按钮将数据$user传递到包含在此视图中的模态窗口中,如下所示: @include('user.edit',$user);
然后在模态窗口中,我可以设置$user的值(像这样:{!! $user->lastname !!})以便编辑它们。
请帮忙 :)
2个回答

11
试试这种方法。我正在使用a标签,但解决方案也应该适用于您的按钮。
<a
    href="#"
    data-target="yourModalId"
    data-toggle="modal"
    data-email="{{ $user->email }}"
    data-username="{{ $user->username }}"
 >
     Edit
</a>

jQuery代码:

$('#yourModalId').on('show', function(e) {
    var link     = e.relatedTarget(),
        modal    = $(this),
        username = link.data("username"),
        email    = link.data("email");

    modal.find("#email").val(email);
    modal.find("#username").val(username);
});

使用find方法传入的id在模态窗口中创建输入字段。

这将把传递给输入字段的值放置在模态窗口内。


太好了!非常感谢您的帮助!但是还有一个问题:在将字段发送到控制器的更新方法之前,如何验证这些字段?因为如果我在没有填写必填字段的情况下按提交按钮(应该会出现错误并保留旧值的模态框),模态框会隐藏,$user也不会更新 :/ - BKF
有没有关于通过Ajax验证模态框的教程?谢谢 :) - BKF
不确定,但是 Laracasts 应该能够帮助你找到你寻找的内容。或者简单地使用 Google 搜索:laravel ajax 验证。 - Saiyan Prince
也许这可以给你一些想法...看看这个... https://laracasts.com/discuss/channels/general-discussion/showing-request-validation-errors-when-submitting-form-by-ajax - Saiyan Prince

2
您可以使用 Blade 的 include() 函数,该函数接受一个数组作为第二个参数:

@include('user.edit', ['user' => $user])


谢谢您的答复,但我无法通过这段代码将$user从视图重新发送到模态框!这适用于定义的值,例如:@include(('user.edit',['user' => 'value'])但我想通过控制器重新发送整个在视图中传递的用户,并且在模态框中,我可以像这样检索用户的数据:{!! $user->username !!}。 - BKF
你错了,我给你的代码是可以工作的,user.edit视图将会拥有所有的$user数据。 - Amir Bar
抱歉,你怎么设置代码来发送 $user ?一旦将 $user 传递到视图中,你只需检索其字段,所以如果你尝试过,请设置一个代码来跟随你 :) - BKF
我认为我有些误解,你真正想问的是:如何从JS传递数据到PHP? - Amir Bar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接