show方法何时执行?

时间:2019-01-23 00:28:02

标签: php laravel function methods controller

我有一个名为image = Image.open("Images\matrix.jpg") photo = ImageTk.PhotoImage(image) #self.background_image = tk.PhotoImage(file=photo) -- Not needed, delete self.background_label = tk.Label(image=photo) self.background_label.image = photo self.background_label.place(x=0,y=0) #self.background_label.img = self.background_image -- Also not needed, delete 的控制器和一个名为PostController的模型。
这是我的PostController:

Post

这是我的post.index:

use Illuminate\Http\Request;
use App\Post;

class PostsController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $posts = Post::all();
        return view('posts.index')->with('posts',$posts);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {

    }

看下面的图片:

enter image description here

当我单击帖子1时,laravel为什么要运行show方法(如图所示)?
这是否意味着每次我们单击链接时,show方法都将起作用?

3 个答案:

答案 0 :(得分:0)

有一个路由文件,用于连接show方法和PostController控制器。该路由以相应的方法触发控制器。当您单击帖子1时,您将获得一个URL路径posts / id,此路径表示以下路由,并且该路由触发方法和控制器

routes/web.php文件中找到路由文件

Route::get('/posts/{id}', 'PostController@show'); 

答案 1 :(得分:0)

I'm assuming you created a resource route in your routes/web.php like so:

Route::resource('posts', 'PostsController');

When you perform a GET request and supply the id as the second url segment, this is routed to the PostsController@show method.

You can learn more about resource routes/controllers here

答案 2 :(得分:0)

  

当我单击帖子1时,laravel为什么要运行show方法(如图所示)?

因为链接的href中的网址格式与show路由的格式匹配。

  

这是否意味着每次我们单击链接时,show方法都将起作用?

不。仅当您的链接与show文件中的show模式匹配时,才使用routes/web.php路由。要使用其他路由,请使用其他URL。例如,如果您从以下位置更改网址:

<a href="/posts/{{ $item->id }}"> 

对此:

<a href="/posts/{{ $item->id }}/edit">

然后将遵循edit路线。


为什么:

这是您正在谈论的链接的代码:

<h3><a href="/posts/{{ $item->id }}">{{ $item->title }}</a></h3>

/posts/$id路线是showroutes/web.php路线的默认路线。

在您的routes/web.php文件中,您可以:

Route::get('/posts/{$id}', 'PostsController@show');

或:

Route::resource('/posts', 'PostsController');

Route::resource(在此示例中与“帖子”一起使用)是以下简称:

Route::get('/posts', 'PostsController@index');
Route::get('/posts/create', 'PostsController@create');
Route::post('/posts', 'PostsController@store');
Route::get('/posts/{id}', 'PostsController@show');
Route::get('/posts/{id}/edit', 'PostsController@edit');
Route::patch('/posts/{id}', 'PostsController@update');
Route::delete('/posts/{id}', 'PostsController@delete');

如您所见,show路由包含在Route::resource中,并且与您在posts.index中给出的网址格式匹配。