在laravel框架中,如何访问指定控制器中的信息内,在laravel框架中如果你想要访问指定的控制器内的方法时,你需要进行路由注册,只有进行过路由注册的地址才能够访问,不然的话会显示404,那么如何进行路由注册呢,下面的内容就是如何进行路由注册一级路由注册的规则
所有的 Laravel 路由都在 routes 目录中的路由文件中定义,这些文件都由框架自动加载。routes/web.php 文件用于定义 web 界面的路由。这里面的路由都会被分配给 web 中间件组,它提供了会话状态和 CSRF 保护等功能。定义在 routes/api.php 中的路由都是无状态的,并且被分配了 api 中间件组
这里我的域名为:local.test.com
一:可用的路由注册方法:
Route::get($uri, $callback); #get请求路由
Route::post($uri, $callback); #post请求路由
Route::put($uri, $callback); #put请求路由
Route::patch($uri, $callback);#patch请求路由
Route::delete($uri, $callback);#delete请求路由
Route::options($uri, $callback);#options请求路由
Route::match(['get', 'post'], $uri,$callback);#多种请求路由
Route::any($uri, $callback);#所有请求路由
指向 web 路由文件中定义的 POST、PUT 或 DELETE 路由的任何 HTML 表单都应该包含一个 CSRF 令牌字段,否则,这个请求将会被拒绝
<form method="POST" action="/profile">
{{ csrf_field() }}
...
</form>
二:基本路由注册方法
1:路由直接输出
在routes/web.php文件中添加:
Route::get('test', function () {
return 'Hello World';
});
在浏览器上输入local.test.com/test时浏览器上输出的是Hello World
2:路由访问控制器
在routes/web.php文件中添加:
Route::get('test', 'TestController@index');
然后在app/Http/Controllers目录下新建一个TestController.php文件
<?php
namespace App\Http\Controllers;
use Illuminate\Routing\Controller as BaseController;
class TestController extends BaseController {
public function index() {
return '11';
}
}
在浏览器上输入local.test.com/test时浏览器上输出的是11
3:重定向路由
在routes/web.php文件中添加:
Route::redirect('/here', '/there', 301);
表示的是浏览器访问local.test.com/here就会重定向到local.test.com/there
4:视图路由
在routes/web.php文件中添加:
Route::view('/test', 'test');
上述代码表示的是不经过控制器直接渲染视图文件test.php,在resources/views目录下新建一个test.php文件,里面写上html代码,然后在浏览器访问local.test.com/test是显示的就是test.php内的html代码内容
还可以像视图文件传递参数,例:
Route::view('/test', 'test',['name' => 'nihao']);
在html中使用<?= $name?>使用传递来的参数
5:路由参数
在routes/web.php文件中添加:
Route::get('test/{id}', function ($id) {
return $id;
});
在浏览器上输入local.test.com/test/10,这时候浏览器上显示的是10
你还可以对传递的参数进行校验
Route::get('test/{id}', function ($id) {
//
})->where('id', '[0-9]+');
上述的检测是id参数必须是数字,如果这时候你输入的是local.test.com/test/abc,这时候显示的是404,你输入local.test.com/test/1时,正确
如果检测的参数是多个的话,where里的参数是一个数组,例:
Route::get('test/{id}/{name}', function ($id, $name) {
//
})->where(['id' => '[0-9]+', 'name' => '[a-z]+']);
6:配置全局约束
修改app/Providers目录下的RouteServiceProvider.php文件的boot方法:
这里我配置所有的id参数必须是数字:
public function boot() {
Route::pattern('id', '[0-9]+');
parent::boot();
}
配置完成之后访问有id参数的url是如果id你输入的不是数字,这时候显示的是404
7:命名路由
命令路由简单来说就是给路由起别名
例:
在routes/web.php文件中添加:
Route::get('test/test', 'TestController@test')->name('test');
然后在另一个路由对应的方法中输入
// 生成 URL...
$url = route('test');
// 生成重定向...
return redirect()->route('test');
8:中间件配置约束
(1):创建一个中间件
使用命令行在项目目录下输入
php artisan make:middleware CheckAge #Check 表示中间件文件名称
这时候在App/Http/Middleware目录下就会生成一个Check.php文件
修改CheckAge.php 文件:
<?php
namespace App\Http\Middleware;
use Closure;
class Check
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if ($request->route()->named('profile')) {
return redirect('/test');
}
return $next($request);
}
}
(2):注册中间件
在app/Http/Kernel.php文件中的$routeMiddleware变量中添加:
'check' => \App\Http\Middleware\Check::class,
(3):配置中间件约束
在routes/web.php文件中:
Route::middleware(['check'])->group(function () {
Route::get('/', function () {
// 使用 check 中间件
});
Route::get('/test', function () {
// 使用 check 中间件
});
});
Route::middleware(['check'])->group内的所有路由配置都遵循check.php中间件的规则
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。