简体   繁体   English

Laravel URL 重写和路由

[英]Laravel URL rewriting and routing

I am coding a webapp based on laravel.我正在编写一个基于 laravel 的 webapp。 But getting some difficulties in routing function.但是在路由 function 时遇到了一些困难。 Can you help me by providing suitable code.你能通过提供合适的代码来帮助我吗?

Lets start with a example.让我们从一个例子开始。

User is on index page http://example.com On this page there is a list of urls that is dynamically generated.用户在索引页面http://example.com在此页面上有一个动态生成的 url 列表。

Every url has a format like - http://example.com/messages?n=79688每个 url 的格式都类似于 - http://example.com/messages?n=79688

here 79688 is message id.这里 79688 是消息 ID。

It want the url to be like http://example.com/messages/79688它希望 url 像http://example.com/messages/79688

Here is web.php //Route for Messages这里是 web.php //消息路由

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

Here is HomeController.php这是 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"); 
    } 
}

Can you please tell me how to modify this controller so that it can catch message id from url http://example.com/messages/79688你能告诉我如何修改这个 controller 以便它可以捕获来自 url http://example.com/messages/796的消息 id

Use it用它

Route路线

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

Controller Controller

public function messages(int $number){
    

make your route like让你的路线像

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

your button will be like你的按钮会像

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

here $message->id is the number you want to pass in the url.这里的$message->id是您要在 url 中传递的数字。

and your controller和你的 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