Laravel 路由控制器

Laravel 路由控制器

路由控制器允许您创建具有用于处理请求的方法的控制器类。

现在,我们将通过一个示例了解路由控制器。

步骤1: 首先,我们需要创建一个控制器。我们之前已经创建了名为’ PostController ‘的控制器。

步骤2: 打开 web.php 文件,并写入以下代码:

Route::get('/post','PostController@index');

在上面的代码中,’ /post ‘是我们想要访问的 URL, PostController 是控制器的名称。’ index ‘是在 PostController.php 文件中可用的方法的名称,@index 表示当我们访问 ‘/post’ URL 时应该触发 index() 方法。

步骤3: 将下面的代码添加到高亮显示的位置:

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class PostController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
public function index()
{
      return "Hello javaTpoint";}     →
/**
     * 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\Reques request
     * @return \Illuminate\Http\Response
     */
public function store(Requestrequest)

{

        //

 }
 /**
     * Display the specified resource.
     *
     * @param  int  id
     * @return \Illuminate\Http \Response
*/
public function show(id)
{
        //
}
/**
     * Show the form for editing the specified resource.
     *
     * @param  int  id
     * @return  \Illuminate\Http\Response
     */
public function edit(id)
{
        //
 }

/**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request   
request
     * @param  intid
     * @return \Illuminate\Http\Response
     */

public function update(Request request,id)
{
        //
}


/**
     * Remove the specified resource from storage.
     *
     * @param  int  id
     * @return  
\Illuminate\Http\Response
     */
 public function destroy(id)
 {
       //
  }
}

步骤4: 在浏览器中输入URL,即 localhost/laravelproject/public/host ,然后输出结果如下:

输出

Laravel 路由控制器

到目前为止,我们已经观察了如何访问控制器。现在,我们将看到如何将数据传递给控制器类。

将数据传递给控制器

让我们通过一个例子来了解如何将数据传递给控制器:

步骤1:web.php 文件中添加以下代码:

Route::get(‘/post/{id}’,’PostController@index’);

以上代码在’/post’ URL中包含’id’参数。

步骤2: 编辑PostController.php文件。

public function index(id)
{
    return "ID is :".id;
}

在上述情况中,我们已经更新了index()方法。我们在index()方法中传递了’id’参数。

步骤3: 在Web浏览器中输入URL ‘ localhost/laravelproject/post/100 ‘,然后输出将如下所示:

Laravel 路由控制器

控制器和命名空间

当我们在 Route::get() 方法中指定控制器类时,不需要指定完整的控制器命名空间。由于 RouteServiceProvider 加载包含命名空间的所有路由文件,我们只需指定命名空间中 App/Http/Controllers 后的类名。

如果完整的控制器类为 App/Http/Controllers/Post/PostController ,我们可以如下注册控制器的路由:

Route::get(‘\post’,’Post\PostController@index’);

单一方法控制器

如果我们想在控制器中使用单一方法,可以在控制器上使用 single __invoke() 方法。

当我们使用命令php artisan make:controller PostController创建控制器时, PostController 文件的结构如下:

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class PostController extends Controller
{

      //

}

现在,在PostController类中添加__invoke()函数的代码:

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class PostController extends Controller
{
    //
 public function __invoke(id)
{
  return "id is : ".id;
}
}

最后,我们将代码添加到 web.php 文件中,该文件负责处理操作。

route::get('/post/{id}','PostController');

以上代码触发了PostController类的__invoke()方法。这意味着我们不需要编写@invoke方法来访问单个操作控制器。

输出

当我们输入URL ‘ localhost/laravelproject/public/post/67 ‘时,输出结果将是:

Laravel 路由控制器

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程