Laravel 路由(一)

参考:http://laravelacademy.org/post/398.html

以下代码在:laravel文件夹/app/Http/routes.php文件中更改填写

1.路由 GET 请求

格式:

Route::get(‘请求页面‘,function(){
    return 返回值;
});

  示例:

Route::get(‘/hello‘,function(){
    return "Hello Laravel[GET]!";
});

2.路由 POST 请求

格式:

Route::post(‘请求页面‘,function(){
    return 返回值;
});

  示例:

Route::post(‘/hello‘,function(){
    return "Hello Laravel[POST]!";
});

  有一点需要注意的是,如果不post到/hello这个页面,而是直接访问,会提示:

Sorry, the page you are looking for could not be found.

所以,还需要构造一个路由方法来post请求到/hello这个页面,下面的代码用构造了get请求,在get返回的表单中post请求/hello页面:

Route::get(‘/testPost‘,function(){
    $csrf_token = csrf_token();  //写这篇文章的时候没有明白怎么用,删除没有影响。
    $form = <<<FORM
        <form action="/hello" method="POST">  
            <input type="hidden" name="_token" value="{$csrf_token}">  //写这篇文章的时候没弄明白这有什么用,删除没有影响。
            <input type="submit" value="Test"/>
        </form>
FORM;
    return $form;
});

  当访问/testPost页面的时候,返回一个表单,只有一个Test的submit按钮,当点击Test按钮,post请求/hello页面,显示:

  Hello Laravel[POST]!

3.其他请求:

match请求:允许使用多种方式请求页面,语法——Route::match([‘请求方法‘,‘请求方法‘,...,‘N‘],‘页面地址‘,回调函数);

   any请求:允许所有方式请求页面,语法——Route::any(‘页面地址‘,回调方法);

4.路由参数:

  这样的参数在请求时必须填写,不能为空。

  语法:

Route::get(‘/hello/{参数}‘,function($name){
    return "Hello {$name}!";
});

  示例:

Route::get(‘/hello/{name}‘,function($name){
    return "Hello {$name}!";
});

5.路由多参数:

  这样的参数在请求时必须填写,不能为空。

  语法:

Route::get(‘/hello/{参数1}/{参数2}‘,function($arg1,$arg2){
    return "Hello {$arg1}--{$arg2}!";
});

  示例:

Route::get(‘/hello/{name}--/{user}‘,function($name,$user){
    return "Hello {$name} by {$user}!";
});

6.可选参数

  这样的参数在请求时不是必须填写,可以为空。

  语法:

Route::get(‘/hello/{参数名?}‘,function($name="默认参数"){
    return "Hello {$name}!";
});

  示例:

Route::get(‘/hello/{name?}‘,function($name="Laravel"){
    return "Hello {$name}!";
});

7.正则约束:

  所有参数类型都适用。

  语法:

Route::get(‘/hello/{参数名?}‘,function($name="默认参数"){
    return "Hello {$name}!";
})->where(‘参数名‘,‘正则表达式‘);

8.全局正则约束:

  如果我们想要在全局范围内对参数进行条件约束,可以在RouteServiceProvider(/app/Providers/RouteServiceProvider.php)boot方法中做如下定义:

public function boot(Router $router)
{
    $router->pattern(‘name‘,‘[A-Za-z]+‘);  //新加行
    parent::boot($router);
}
时间: 2024-10-10 04:37:42

Laravel 路由(一)的相关文章

原来 laravel 路由 参数可以为可选。。。 很灵活

基本路由 您的应用程序的绝大多数路由将在 app/routes.php 文件中定义.Laravel 中最简单的路由由一个 URI 和一个闭包调用组成. 基本 GET 路由 复制代码代码如下: Route::get('/', function(){return 'Hello World';}); 基本 POST 路由 复制代码代码如下: Route::post('foo/bar', function(){return 'Hello World';}); 注册一个路由以响应所有 HTTP 方法 复制

laravel路由基础

基础: 所有的laravel路由都定义在 app/Http/routes.php 这个文件里,会被框架自带加载.简单的路由会接受一个URI和一个Closure类. Route::get('foo', function () { return 'Hello World'; }); 默认的routes.php 是被RouteServiceProvider所加载进入框架的,允许自定义路由和响应 Route::get($uri, $callback); Route::post($uri, $callba

laravel 路由修改不起作用解决方案

起由:今天帮朋友解决了下bug,bug就是它使用laravel时候,怎样修改路由文件,都没有发生变化,但是故意在routes.php中增加语法错误时又具有错误,因此想到了可能是这个项目使用的laravel的路由缓存,而且其路由文件中就有很多很多的路由,因此更加断定项目使用了路由缓存. 解决方案:每次在修改路由文件的时候,在项目中打开命令行,执行php artisan route:cache进行重新缓存,这样修改的路由文件才可以起作用 laravel路由缓存的优点: 当路由定义特别多的时候,每次进

laravel路由无法访问,报404,No query results for model [App\Models\...]

今天遇到了一个问题,在routes/web.php中配置了路由,但始终无法访问该路由,一直报404. Route::resource('gift_packs', 'GiftPacksController', ['only' => ['index', 'show', 'create', 'store', 'update', 'edit', 'destroy']]); Route::get('gift_packs/test', '[email protected]')->name('gift_pa

laravel路由定义

参考http://www.ruchee.com/notes/fms/laravel_primer.html 路由 路由定义位置在 app/routes.php 文件,支持五种路由方法,采用回调函数的形式工作: Route::get() Route::post() Route::put() Route::delete() Route::any() 相当重要的一点:路由是区分大小写的,/hello 和 /Hello 是不同的路由 可以用 {} 对路由进行命名,如: Route::get('/hell

laravel 路由使用(二)

我们在第一篇文章已经描述了在laravel中一些简单路由的使用. 那么我们来回顾一下 1,基础路由 2,多请求路由 3,路由传递参数 4,路由限制 5,控制器路由 有了第一篇文章的基础之后呢,我们可以学习以下的知识点 但是,经过上篇文章呢,可能会有的人有意见,为什么呢? 关于laravel的路由定义,很多人看到后有一个疑惑: 每条地址规则都要定义路由,岂不是很累? 这个问题确实是个问题,不过,laravel给了我们一个折中的方案----资源路由. 资源路由 控制器路由我认为主要是解决路由定义繁杂

Laravel路由和控制器的绑定

路由和控制器的关系 路由文件地址在\app\Http\routes.php,我们来看两种不同的路由. 1 2 3 4 5 6 7 8 Route::get('/', function () {     return view('welcome'); }); Route::get('/hi', function () {     return 'hello world'; }); 以上均为绑定匿名函数的路由,虽然可以返回视图,也可以返回字符串,但本质都是一样的. 1 2 Route::get('/

laravel路由之分组路由

laravel下的分组路由可以嵌套如下: Route::group(['prefix'=>'admin'],function(){ Route::group(['prefix'=>'dtk'],function(){ Route::get('/getapi','[email protected]'); }); Route::group(['prefix'=>'qtk'],function(){ Route::get('/getapi','[email protected]'); });

laravel路由 实现短连接生成及跳转(php 301重定向)

最近懒癌犯了,本来早想做的事拖了1个月.短连接这个之前工作中发送短信是用到过,一般大的网站都会有自己的短连接生成网站,我们公司也有.当然这次我是想在自己的服务器上弄. 短连接原理:将网站地址传到mysql获取自增的id,然后加密成字符串输出到页面.当调用短连接时,后端解密获取实际的url地址,然后header函数做一个重定向跳转(301) 我用了laravel框架,之前学过一点点好久没用了,做点小东西,当做是复习. 路由配置: 1 Route::get('/showindex', functio