【问题标题】:PHP laravel controller should not reload pagePHP laravel 控制器不应重新加载页面
【发布时间】:2019-12-29 18:56:59
【问题描述】:

我的控制器出现了一个奇怪的小问题。我不希望它重新加载我的页面。我不知道这是否可行,但在调用此函数时我的页面必须不重新加载。只要它不重新加载,它是否给出无用的消息都没关系。目前它返回 back() 作为占位符。这是我的控制器:

public function update(Request $request, User $user)
    {
        $this->validate($request,[
            'name' => 'required|min:3|unique:users,name,' . $user->id,
            'email' => 'required|min:3|unique:users,email,' . $user->id
        ]);


        $user->name = $request->name;
        $user->email=$request->email;
        $user->active=$request->active;
        $user->admin=$request->admin;
        $user->save();

        session()->put('flash_message', 'User succesfully edited!');


//        return redirect('admin/users2')
//        sleep(10);
        return back();


    }

我的表格:

<form action="" method="post">
                    @method('put')
                    @csrf
                    <div class="form-group">
                        <label for="name">Name</label>
                        <input type="text" name="name" id="name"
                               class="form-control @error('name') is-invalid @enderror"
                               placeholder="name"
                               minlength="3"
                               required
                               value="">
                        @error('name')
                        <div class="invalid-feedback">{{ $message }}</div>
                        @enderror

                        <br>
                        <label for="email">email</label>
                        <input type="text" name="email" id="email"
                               class="form-control @error('email') is-invalid @enderror"
                               placeholder="email"
                               minlength="8"
                               required
                               value="">

                        @error('email')
                        <div class="invalid-feedback">{{ $message }}</div>
                        @enderror

                        {{--type hidden voor de waarde in te stellen als checkbox unchecked is--}}
                        <br>
                        <input type="hidden" name="active" value="0" />
                        <input type="checkbox" id="active" name="active" value=1> Active
                        <br>
                        <br>
                        <input type="hidden" name="admin" value="0" />
                        <input type="checkbox" id="admin" name="admin" value=1> Admin

                        <div class="invalid-feedback"></div>
                    </div>
                    <button style="display: inline" type="submit" class="btn saveadvanced btn-success">Save changes</button>
                </form>

我不知道这是否可能。如果有人知道实现这一点的方法,请随时发表评论。

【问题讨论】:

  • 听起来您可能需要 Ajax?但问题尚不清楚。从用户的角度来看,所需的流程到底是什么?
  • 我有一个用户表,必须自动更新而无需重新加载页面。我可以完成,但唯一的问题是页面重新加载,而我的教授不希望这样做。
  • 你的表单是什么样子的?
  • @jeremykenedy 我用表格更新了帖子。
  • 阻止默认表单提交,然后发出post请求。分别阅读here 和here。另外,请查看this answer

标签: javascript php jquery laravel controller


【解决方案1】:

首先controller 不做任何request,它处理http request。如果您不想重新加载浏览器选项卡,则必须通过 ajax 请求发出此请求。

对于这个功能,你可以看看axios

例如:

axios.post('/user', {
    firstName: 'Fred',
    lastName: 'Flintstone'
  })
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多