【问题标题】:redirect a against different requests (laravel 5.3)针对不同的请求重定向 a (laravel 5.3)
【发布时间】:2017-06-25 17:33:30
【问题描述】:

我正在开发 laravel 5.3 我想再次重定向不同页面上的用户从哪个页面用户来。 我有 3 页,其中一页是

创建

查看全部

查看

我使用创建页面来创建和编辑目的。 查看全部并查看两个页面都有编辑按钮。单击后进入控制器编辑方法并在两种情况下都重定向到编辑页面。

编辑页面有一个返回按钮。我希望当用户单击返回时,如果他来自查看所有页面以进行编辑,则应该去查看所有内容,否则如果他来自表单视图,则应该在单击返回时返回查看。

编辑按钮的代码在视图和查看所有页面时都是一样

    <li>
      <a href="{{ route('student.edit', $student->id) }}"> Edit</a>
    </li>

点击编辑时,它在控制器编辑方法中出现

public function edit($id){
    $student = Student::findOrFail($id);
    $data = ['action' => 'edit'];

    return view('student.create')->with(compact('data', 'student'));
 }

创建页面上的按钮和现在一样

<div class="row">
  <button type="submit" value="dd">Save and add</button>
  @if ($data['action'] == 'edit')
  <a href="{{ route('student.index') }}">
     <button type="button">Return</button>
  </a>
  <button type="submit" value="edit">Save</button>
  @endif
</div>

现在它让我从更新方法中查看所有学生都很好,因为我使用检查按钮值作为

if(Input::get('add')) {
   return redirect()->route('student.create');
}else{
   return redirect()->route('student.index');
}

如何根据该用户 cam 从学生视图重定向到 student.view 以进行编辑

任何想法我该怎么做可能是我也可以使用会话请帮助如何做

【问题讨论】:

  • 使用 laravel 的辅助方法 back()。它会为你生成上一页的url。
  • 当我点击返回按钮时它应该返回
  • 点击返回按钮时,它不会进入更新方法,只是应该从编辑页面返回
  • &lt;a href="{{ route('student.index') }}"&gt;&lt;button type="button" Return&lt;/button&gt;&lt;/a&gt; 从上面的路线应该返回
  • 是的......它肯定会转到用户来自的最后一页。

标签: php laravel redirect


【解决方案1】:

您可以使用$uri = $request-&gt;path(); 获取请求中的URI,然后使用switch$uri 进行检查来指示下一步要做什么。

你还需要修改你的控制器头

use Illuminate\Http\Request;

并将编辑方法更新为public function edit(Request $request, $id){

https://laravel.com/docs/5.3/requests#request-path-and-method

【讨论】:

  • 亲爱的 url 将是相同的,因为两者都有编辑路线
  • 从上面的路线应该去返回。它不会在返回点击时进入控制器
【解决方案2】:

要在控制器中返回上一页/路由,请使用:

return redirect()->back();

或者简单:

return back();

然后你可以有这样的编辑功能:

public function edit($id)
{
    $student = Student::findOrFail($id);
    $data = [ 'action' => 'edit'];

    return back()->with(compact('data', 'student'));
}

参考:Laravel 5.2 doc - redirect

更新:

如果你的意思是它应该在点击返回按钮后返回,那么这就足够了:

 <a href="{{ URL::previous() }}"> Return </a>

PS:我在 Laravel 5.2.* 上对此进行了测试,它确实有效 我希望这会有所帮助:)

【讨论】:

  • 点击返回按钮后应该返回
  • 函数执行后应该返回
  • 从上面的路线应该去返回。它不会在返回点击时进入控制器
  • 是的,它可以返回,但仍然存在问题是,如果他第一次添加并且点击返回它不会返回到需要的页面上,我还有一个添加按钮???
  • 学生正常添加新记录的时候,去哪了?它停留在页面上还是转到查看页面?如果它进入视图页面,那么控制器方法中的back() 函数将为您完成这项工作。您应该尝试一下并告诉我们它是否仍然无法正常工作......
【解决方案3】:

使用 {{ URL::previous() }}

你可以像下面这样更新你的代码

<a href="{{ URL::previous() }}"><button type="button">Return</button></a>

【讨论】:

  • 是的,它可以返回,但仍然存在问题是,如果他第一次添加并且点击返回它不会返回到需要的页面上,我还有一个添加按钮???
  • 在创建页面上,您没有显示返回链接。当您单击编辑,查看所有页面编辑和查看页面编辑时,只有您显示返回 url。那么问题出在哪里。
猜你喜欢
  • 2017-04-18
  • 2017-04-19
  • 2017-04-17
  • 2017-02-24
  • 2017-04-12
  • 2014-02-13
  • 1970-01-01
  • 2020-12-17
  • 1970-01-01
相关资源
最近更新 更多