📜  laravel 控制器调用 (1)

📅  最后修改于: 2023-12-03 14:43:48.325000             🧑  作者: Mango

Laravel 控制器调用

Laravel是一个流行的PHP框架,它有一个强大的控制器功能,可以帮助开发人员更容易地组织和管理代码。本文将介绍如何在Laravel应用程序中使用控制器来处理HTTP请求。

创建控制器

在Laravel中创建控制器非常简单。只需使用php artisan命令并指定控制器名称,就可以轻松创建控制器。例如,使用以下命令可以创建一个名为PostsController的控制器:

php artisan make:controller PostsController

该命令将在app/Http/Controllers目录中创建一个名为PostsController.php的文件。

定义路由

定义路由是使控制器与URL之间建立联系的关键。如果您想让PostsController处理来自/posts URL的请求,您需要定义一个对应的路由。在routes/web.php文件中添加以下内容,即可将GET请求映射到PostsController@index方法:

Route::get('/posts', 'PostsController@index');

在这里,PostsController@index代表当GET请求到达/posts URL时,Laravel将调用PostsController中的index方法。

创建控制器方法

现在我们已经定义了我们的路由,接下来我们需要创建方法来处理PostsController中的请求。以下是使用Laravel控制器处理HTTP请求的方法:

public function index()
{
    $posts = Post::all();

    return view('posts.index', compact('posts'));
}

在这里,index方法查询显示所有帖子的数据表,并通过compact()方法将$posts变量传递给视图。

创建视图

定义视图是完善控制器流程的最后步骤。您可以使用Laravel的Blade模板引擎来创建视图。例如,以下是posts.index视图,它显示所有帖子的标题和正文:

@extends('layouts.app')

@section('content')
    <h1>Posts</h1>
    <hr>
    @foreach($posts as $post)
        <h2>{{ $post->title }}</h2>
        <p>{{ $post->body }}</p>
        <hr>
    @endforeach
@endsection

在这里,我们使用Blade语法和@section指令定义一个名为content的部分,该部分将在layouts.app布局中呈现。接下来,我们使用@foreach循环迭代$posts变量的每个元素,并分别输出标题和正文。

代码片段
<?php

namespace App\Http\Controllers;

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

class PostsController extends Controller
{
    public function index()
    {
        $posts = Post::all();

        return view('posts.index', compact('posts'));
    }
}
@extends('layouts.app')

@section('content')
    <h1>Posts</h1><hr>
    @foreach($posts as $post)
        <h2>{{ $post->title }}</h2>
        <p>{{ $post->body }}</p>
        <hr>
    @endforeach
@endsection
Route::get('/posts', 'PostsController@index');