laravel请求不重定向正确的页面

时间:2019-05-31 04:29:33

标签: php laravel laravel-5

我想基于数据库表上的请求kelas进行过滤。当我单击一个过滤器时,它没有显示任何错误,但没有显示我的过滤器的jadwal页。它显示了主页,但网址是正确的,例如lps.com/?jadwal-2

我已经从stackoverflow制作了一个名为SanitizeMiddleware的中间件,但仍然没有用。

这是我的路线 web.php

Route::get('/', 'HomepageController@index');

Route::resource('pengumuman', 'PengumumanController');
Route::resource('jadwal', 'JadwalController');
Route::resource('rapot', 'RapotController');

这是我的 JadwalController

中的 index()
public function index()
{
    if (request()->has('kelas')) {
        $jadwal = jadwal::where('kelas', request('kelas')); 
    } else {
        $jadwal = jadwal::all();
    }

    return view('jadwal.index')->with('jadwal',$jadwal);

    //$jadwal = jadwal::all();
    //return view('jadwal.index')->with('jadwal',$jadwal);
}

这是我的index.blade.php

<div class="container">
    <br>
    <h1>
        <strong>Jadwal Pelajaran</strong>
    </h1>
    <a href="/?kelas=1">jadwwal kelas 1</a>
    <a href="/?kelas-2">jadwal kelas 2</a>
    <a href="/?kelas-3">jadwal kelas 3</a>
    </form>
    <table class="table table-bordered">
        <thead>
            <tr>
                <th scope="col"></th>
                <th scope="col">07.00-08.00</th>
                <th scope="col">08.00-09.00</th>
                <th scope="col">09.00-10.00</th>
                <th scope="col">10.00-11.00</th>
                <th scope="col">10.00-12.00</th>
                <th scope="col">action</th>
            </tr>
        </thead>
        <tbody>
            @if(count($jadwal)>0)
                @foreach($jadwal as $jadwals)
                    <tr>
                        <th scope="row">{{$jadwals->hari}}</th>
                        <td>{{$jadwals->jamke1}}</td>
                        <td>{{$jadwals->jamke2}}</td>
                        <td>{{$jadwals->jamke3}}</td>
                        <td>{{$jadwals->jamke4}}</td>
                        <td>{{$jadwals->jamke4}}</td>
                        <td>
                            <a href="/jadwal/{{$jadwals->id}}/edit" class="btn btn-info">Edit</a>
                        </td>
                    </tr>
                @endforeach
            @else
                <p>tidak ada jadwal</p>
            @endif
        </tbody>
    </table>
</div>

这是问题所在:-

这是我过滤之前的jadwal页面 this is my jadwal page before filter

我使用request()单击过滤器后,

这是我的页面 this my page after i click the filter using request()

2 个答案:

答案 0 :(得分:2)

这只是一个简单的网址问题

您看到的是 jadwal 列表显示在路线中

lps.com/jadwal

您看到的是什么问题

<a href="/?kelas=1">jadwwal kelas 1</a>
<a href="/?kelas=2">jadwal kelas 2</a>
<a href="/?kelas=3">jadwal kelas 3</a>

在单击任何此链接时,其重定向到

例如,如果我单击 jadwwal kelas 1

lps.com/?kelas=1

因此,它没有重定向到lps.com/jadwal?kelas=1

所以尝试改变

<a href="jadwal/?kelas=1">jadwwal kelas 1</a>
<a href="jadwal/?kelas=2">jadwal kelas 2</a>
<a href="jadwal/?kelas=3">jadwal kelas 3</a>

还有最后一件事,如果您正在使用分页

{{$jadwal->links()}}
  

这只会添加?page = yourCurrentPageNumber

但是在某些情况下,您需要过滤器和分页

因此请尝试以下方法

{{$jadwal->appends(request()->input())->links()}} 

它将附加所有GET请求参数

因此,如果您需要访问nth page中的kelas=1,它将起作用

希望有帮助

如果您正面临并在下面发表友善的评论

答案 1 :(得分:0)

谈论HTML URL,lps.com/?jadwal-2只是使用名为jadwal-2的GET参数调用主页,而根本没有任何价值。 lps.com/jadwal好,lps.com/jadwal?kelas=2好。忘记破折号

在href属性中使用/告诉系统从顶层路径开始。更改为相对,例如:

<a href="?kelas=1">jadwwal kelas 1</a>
<a href="?kelas-2">jadwal kelas 2</a>
<a href="?kelas-3">jadwal kelas 3</a>

因此,进入页面lps.com/jadwal会导致URL lps.com/jadwal?kelas=1,这是正确的语法和模式。