簡體   English   中英

Laravel URL 重寫和路由

[英]Laravel URL rewriting and routing

我正在編寫一個基於 laravel 的 webapp。 但是在路由 function 時遇到了一些困難。 你能通過提供合適的代碼來幫助我嗎?

讓我們從一個例子開始。

用戶在索引頁面http://example.com在此頁面上有一個動態生成的 url 列表。

每個 url 的格式都類似於 - http://example.com/messages?n=79688

這里 79688 是消息 ID。

它希望 url 像http://example.com/messages/79688

這里是 web.php //消息路由

Route::get('/messages', 'HomeController@messages')->name('Messages');

這是 HomeController.php

public function messages(Request $request) 
{ 
    if(isset($request->n)) { 
        $number = $request->input('n'); 
        $number_check = Number::select('type')->where('number', $number)->first(); 
        $per_page = env('PER_PAGE', 15); 
        $query = Message::where('number', $number); 
        $messages = $query->orderBy('created_at', 'DESC')->paginate($per_page); 
        $messages->withPath('?n='.$number); 
        return view('messages')->with('messages', $messages)->with('number', $number)->with('count', $messages->total());
    } else { 
        return redirect()->route('Main')->with('error', "Message not found"); 
    } 
}

你能告訴我如何修改這個 controller 以便它可以捕獲來自 url http://example.com/messages/796的消息 id

用它

路線

Route::get('/messages/{number}', 'HomeController@messages')->name('Messages');

Controller

public function messages(int $number){
    

讓你的路線像

Route::get('/messages/{number}', 'HomeController@messages')->name('messages');

你的按鈕會像

<a href="{{ route('messages',$message->id) }}">
    <button >Click Here</button>
</a>

這里的$message->id是您要在 url 中傳遞的數字。

和你的 controller

public function messages($number)
{
    $number_check = Number::select('type')->where('number', $number)->first(); 
    $per_page = env('PER_PAGE', 15); 
    $query = Message::where('number', $number); 
    $messages = $query->orderBy('created_at', 'DESC')->paginate($per_page); 
    $messages->withPath('?n='.$number); 
    return view('messages')->with('messages', $messages)->with('number', $number)->with('count', $messages->total());
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM