Laravel8入门教程(三)控制器与路由的绑定

        控制器用于将相关的 HTTP 请求封装到一个类中进行处理,如同TP6一样,默认情况下,控制器没有分组,默认都存放在 app/Http/Controllers 目录下。

1、基本控制器

 创建一基本控制器()

1、创建普通控制器  默认在/app/Http/Controllers/目录下生成
# php artisan make:controller IndexController

2、创建admin应用下的控制器
# php artisan make:controller admin/ArticleController         
此命令在/app/Http/Controllers/下生成一个admin目录并,并创建了ArticleController.php控制器文件

生成的控制器位于 app/Http/Controllers 目录下

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

}

2、资源控制器

1、创建资源控制器
# php artisan make:controller  admin/ArticleController --resource
2、创建资源控制器,并指定模型
# php artisan make:controller  admin/ArticleController --resource --model=Article   

生成的控制器包含了index、create、store等七个方法,资源控制器处理的动作:

请求方式URI路径控制器方法路由名称
GET/admin/articleindexposts.index
GET/posts/createcreateposts.create
POST/postsstoreposts.store
GET/posts/{post}showposts.show
GET/posts/{post}/editeditposts.edit
PUT/PATCH/posts/{post}updateposts.update
DELETE/posts/{post}destroyposts.destroy

对应的路由可以设置为如下:

Route::get('admin/article/index', [ArticleController::class, 'index']);
Route::get('admin/article/create', [ArticleController::class, 'create']);
Route::post('admin/article/store', [ArticleController::class, 'store']);
Route::get('admin/article/show/{id}', [ArticleController::class, 'show']);
Route::get('admin/article/edit/{id}', [ArticleController::class, 'edit']);
Route::put('admin/article/update/{id}', [ArticleController::class, 'update']);
Route::delete('admin/article/destroy/{id}', [ArticleController::class, 'destroy']);

3、路由绑定控制器

这里的绑定方式与Laravel7.x以前的版本不同。

在Laravel7.x中路由指向控制器使用的是如下: 

Route::get('article/index', 'ArticleController@index');
Route::get('article/create', 'ArticleController@create');
Route::post('article/store', 'ArticleController@store');

而从Laravel8开始使用标准的PHP调用语法
如要设置./Controllers/IndexController.php控制器下index()方法的路由

//首先引入
use App\Http\Controllers\IndexController;

//创建路由 http://blog.laravel8.cn/index
Route::get('index', [IndexController::class, 'index']);

//绑定IndexController控制器下的index()方法
//创建类似于TP中的默认控制器、默认方法
// http://blog.laravel8.cn/
Route::get('/', [IndexController::class, 'index']);
//http://blog.laravel8.cn/index
Route::get('index', [IndexController::class, 'index']);
//http://blog.laravel8.cn/index/index
Route::get('index/index', [IndexController::class, 'index']);

如果不引入也可以这样写

Route::get('/article/index', [\App\Http\Controllers\ArticleController::class, 'index']);

4、控制器视图模板载入

public function index()
    {
        $username = '暮云归';
        return view('index',  ['username' => $username]);
    }

使用 view()助手函数来加载模板。 与TP不同的是,这里第一参数必须指定, 如这里的index 表示加载位于/resources/views/目录下的index.blade.php模板。
如果给定为  return view('index/index',  ['username' => $username]); 则便是为/resources/views/index/目录下的index.blade.php模板。

5、仿TP的控制器结构优化

Laravel默认没有对控制器进行分组,所有的控制器都在/app/Http/Controllers/目录下,项目越来越庞大后不利于管理。因此我们采用TP的目录结构:

app
├─Http 
│  ├─Controllers  控制器目录
│  │  ├─admin  后台Admin模块
│  │  │  ├─IndexController.php 后台首页控制器
│  │  │  ├─CategoryController.php 分类管理控制器
│  │  ├─home   前台Home模块
│  │  │  ├─IndexController.php 前台首页控制器
│  │  │  ├─ArticleController.php 文章展示控制器
│  │  ├─user   用户User模块
│  │  │  ├─IndexController.php 用户首页控制器
│  │  │  ├─TagController.php 标签管理控制器

对应的视图文件如

namespace App\Http\Controllers\admin;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class IndexController extends Controller
{
    //
    public function index()
    {
        $username = '暮云归--admin模块下Index控制器下index()';
        return view('admin.index.index',  ['username' => $username]);
    }

    public function mytest()
    {
        $username = '暮云归--admin模块下Index控制器下mytest()';
        return view('admin.index.mytest',  ['username' => $username]);
    }
}


web.php下路由设置

...
use App\Http\Controllers\admin\IndexController as AdminIndexController;


//http://blog.laravel8.cn/admin/index/index
Route::get('admin/index/index', [AdminIndexController::class, 'index']);
//http://blog.laravel8.cn/admin/index/mytest
Route::get('admin/index/mytest', [AdminIndexController::class, 'mytest']);
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Laravel 8 是一个流行的 PHP Web 开发框架,它提供了许多功能和工具来快速构建高质量的 Web 应用程序。下面是 Laravel 8 的快速入门指南: 1. 安装 Laravel 8 首先,您需要安装 Laravel 8。您可以通过使用 Composer 进行安装,打开终端并运行以下命令: ``` composer create-project --prefer-dist laravel/laravel myproject ``` 这将创建一个名为“myproject”的新 Laravel 8 项目。 2. 配置数据库 在使用 Laravel 8 开发 Web 应用程序之前,您需要配置数据库。在 Laravel 8 中,您可以在 `.env` 文件中配置数据库。在 `.env` 文件中设置数据库连接信息,如下所示: ``` DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=mydatabase DB_USERNAME=root DB_PASSWORD= ``` 在这里,您需要将 `DB_DATABASE` 更改为您要使用的数据库名称,并将 `DB_USERNAME` 和 `DB_PASSWORD` 更改为您的数据库用户名和密码。 3. 创建路由Laravel 8 中,您可以使用路由来定义应用程序的 URL。打开 `routes/web.php` 文件并添加以下代码: ``` use Illuminate\Support\Facades\Route; Route::get('/', function () { return view('welcome'); }); ``` 这将创建一个名为“/”的新路由,并将其返回到 `welcome` 视图。 4. 创建控制器 控制器Laravel 8 中用于处理应用程序的逻辑。您可以使用以下命令创建一个新控制器: ``` php artisan make:controller WelcomeController ``` 这将创建一个名为 `WelcomeController` 的新控制器。 5. 绑定路由控制器Laravel 8 中,您可以使用以下代码将路由绑定控制器: ``` use App\Http\Controllers\WelcomeController; Route::get('/', [WelcomeController::class, 'index']); ``` 这将使 `/` 路由调用 `WelcomeController` 的 `index` 方法。 6. 创建视图 在 Laravel 8 中,您可以使用视图来定义应用程序的 HTML。您可以在 `resources/views` 目录下创建一个新视图,如下所示: ``` <!DOCTYPE html> <html> <head> <title>Welcome to my Laravel 8 app!</title> </head> <body> <h1>Welcome to my Laravel 8 app!</h1> </body> </html> ``` 7. 运行应用程序 最后,您可以使用以下命令在本地主机上运行 Laravel 8 应用程序: ``` php artisan serve ``` 这将启动本地开发服务器,并在浏览器中打开 `http://localhost:8000`。您应该能够看到您的 Laravel 8 应用程序的欢迎页面。 以上是 Laravel 8 的快速入门指南。希望对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值