laravel route路由,视图和response

Laravel充分利用PHP 5.3的特性,使路由变得简单并富于表达性。这使得从构建API到完整的web应用都变得尽可能容易。路由的实现代码在 application/routes.php 文件。

和其它框架不同,应用逻辑在Laravel中可以通过两种方式集成。虽然在控制器(controllers)中实现业务逻辑是普遍的做法,但是在Laravel中也可以直接在路由中嵌入应用逻辑。这种方式尤其适用于只有几个页面的小型网站,这样就免去了创建一大堆控制器(controllers),还要为每个控制器创建一些不相干的方法(methods),而最后只是一部分方法(methods)通过手动设置路由的方式被暴露出来。

在下面的代码示例中,第一个参数(parameter)是你“注册”的路由(route),第二个参数是这个路由将要触发的函数(function),函数中包含了应用逻辑。定义路由时不需要开头的斜线(front-slash),唯一的例外是默认路由(default route)只包含一个斜线(front-slash)。

注意: 路由的权重在于其被注册的先后顺序。 因此,任何通配(catch-all)的路由应该在 routes.php 文件的底部注册

3 // app/routes.php
4
5 Route::get();
6 Route::post();
7 Route::put();
8 Route::delete();
9 Route::any();

注册一个能同时响应(GET、POST、PUT、DELETE)HTTP请求方法(HTTP verbs)的路由

ROUTE::any(‘/‘, function()
{
    return "Hello World!";
});

通配符(Wildcards)

强制路径(URI)中的某部分为数字:

Route::get(‘user/(:num)‘, function($id)
{
    //
});

允许路径(URI)中的某部分是字母、数字串:

Route::get(‘post/(:any)‘, function($title)
{
    //
});

允许路径(URI)中的某部分是可选的:

Route::get(‘page/(:any?)‘, function($page = ‘index‘)
{
    //
});

路由参数:Route::get(‘/books/{genre}‘, function($genre)
Route::get(‘user/{id}‘, function($id)
{
    return ‘User ‘.$id;
});

可选路由参数

Route::get(‘user/{name?}‘, function($name = null)
{
    return $name;
});

带有默认值的可选路由参数

Route::get(‘user/{name?}‘, function($name = ‘John‘)
{
    return $name;
});

用正则表达式限定的路由参数

Route::get(‘user/{name}‘, function($name)
{
    //
})
->where(‘name‘, ‘[A-Za-z]+‘);
输入:http://localhost/laravelFirst/public/post/you1  由于1不是,会匹配不到,去掉1就可以匹配到了。
Route::get(‘user/{id}‘, function($id)
{
    //
})
->where(‘id‘, ‘[0-9]+‘);

传递参数限定的数组

当然,必要的时候你还可以传递一个包含参数限定的数组作为参数:

Route::get(‘user/{id}/{name}‘, function($id, $name)
{
    //
})
->where(array(‘id‘ => ‘[0-9]+‘, ‘name‘ => ‘[a-z]+‘))

定义全局模式

如果希望在全局范围用指定正则表达式限定路由参数,可以使用 pattern 方法:

Route::pattern(‘id‘, ‘[0-9]+‘);

Route::get(‘user/{id}‘, function($id)
{
    // Only called if {id} is numeric.
});

访问路由参数

如果想在路由范围外访问路由参数,可以使用 Route::input 方法:

Route::filter(‘foo‘, function()
{
    if (Route::input(‘id‘) == 1)
    {
        //
    }
});

Route::get(‘post/{postTitle}‘,function($postTitle){
$data[‘title‘]=$postTitle;
return View::make(‘simple‘,$data);
});

$data数组传给视图会自动extract。

response;

创建自定义Response

Response类继承自Symfony\Component\HttpFoundation\Response类,提供了多种方法用于构建HTTP Response。

Route::get("custom/response",function(){
$response=Response::make("<h1>hello world</h1>");
$response->headers->set(‘Content-type‘,‘text/plain‘);
return $response;
});

如果需要访问 Response 类的方法,但又要返回一个视图作为响应的内容,通过使用 Response::view 方法可以很容易实现:

return Response::view(‘hello‘)->header(‘Content-Type‘, $type);

在Response中添加Cookie

$cookie = Cookie::make(‘name‘, ‘value‘);

return Response::make($content)->withCookie($cookie);

json response:

Route::get(‘markdown/response‘, function()
6 {
7 $data = array(‘iron‘, ‘man‘, ‘rocks‘);
8 return Response::json($data);
9 });
By handing an array to the Response::json() method it has been converted to a JSON string and
set as the body of our new Response object. Appropriate headers have been set to explain that the

provided data is infact a JSON string.

上面的会被解析为数组

$data = array(‘a‘=>‘iron‘,‘b‘=> ‘man‘, ‘rocks‘);

被解析成:

{"a":"iron","b":"man","0":"rocks"}

download response

Serving files directly requires certain headers to be set. Fortunately, Laravel takes care of this for
you using the Response::download() shortcut. Let’s see this in action.

Route::get(‘file/download‘, function()
6 {
7 $file = ‘path_to_my_file.pdf‘;
8 return Response::download($file);
9 });
Now if we navigate to the /file/download URI the browser will intiate a download instead of
displaying a response. The Response::download() method received a path to a file which will be
served when the response is returned.
You can also provide optional second and third parameters to configure a custom HTTP status code
and an array of headers. For example:

Route::get(‘file/download‘, function()
6 {
7 $file = ‘path_to_my_file.pdf‘;
8 return Response::download($file, 418, array(‘iron‘, ‘man‘));
9 });
Here we will serve our file with the HTTP status code of 418 (I’m a Teapot) and a header value of
iron=man.
Well this chapter was a lot longer than I originally anticipated, but I’m sure you will see that
returning appropriate response objects can be a lot more valuable than returning simple strings.
In the next chapter we will take a look at route filters, which will allow us to protect our routes or
perform actions before/after they are executed.

 

laravel route路由,视图和response

时间: 2024-10-12 13:37:33

laravel route路由,视图和response的相关文章

[PHP] - Laravel - Route路由

前言 这里使用的是Laravel 5 PHP Laravel的路由比较强悍,但也正因如此,不统一而容易凌乱.比如在路由中可以直接写方法操作(破坏封装啊) 以下是个人学习的例子,不供参考 路由中的直接方法调用和路由地址的使用规则例子 /** * 定义一个/hi地址,返回hi的view */ Route::get('/hi', function() { return View::make("hi"); }); /** * 定义一个/hello地址,带参数,默认参考值为Robin * 地址访

laravel route路由

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

Laravel教程 二:路由,视图,控制器工作流程

Laravel教程 二:路由,视图,控制器工作流程 此文章为原创文章,未经同意,禁止转载. View Controller 上一篇教程我们走了那么长的路,终于把Laravel安装好了,这一篇教程我们就要进入Laravel的神奇世界了,主要是讲解Laravel的Router,Views,Controllers的工作流程,目的也就是让大家明白Laravel在处理一个get请求的时候是如何工作的. 在开始之前,我们首先得将我们的服务器启动起来,如果你使用Laravel的artisan,你可以直接: p

laravel的路由

laravel的每个操作都要写一个路由 laravel的路由要写在routes里的web.php 代码如下 use App\Http\Resources\User as UserResource; use App\Model\Test\User; //Route::get('/', function () { // return view('welcome'); //}); //Route::get('/haha', function () { // return 'hehehe'; //});

Laravel的路由功能

只能在当前方法内加载视图和URL跳转! Laravel的路由功能,布布扣,bubuko.com

Laravel中路由怎么写(二)

1.路由命名——给路由起个名字 1.1 基本使用 我们使用as关键字来为路由命名: Route::get('/hello/Laravel',['as'=>'academy',function(){ return 'Hello Laravel!'; }]); 路由命名可以让我们在使用route函数生成指向该路由的URL或者生成跳转到该路由的重定向链接时更加方便: Route::get('/testNamedRoute',function(){ return route('academy'); })

Laravel 5系列教程二:路由,视图,控制器工作流程

免费视频教程地址https://laravist.com/series/laravel-5-basic 上一篇教程我们走了那么长的路,终于把Laravel安装好了,这一篇教程我们就要进入Laravel的神奇世界了,主要是讲解Laravel的Router,Views,Controllers的工作流程,目的也就是让大家明白Laravel在处理一个get请求的时候是如何工作的. 在开始之前,我们首先得将我们的服务器启动起来,如果你使用Laravel的artisan,你可以直接: php artisan

根据指定路由生成URL |Generating a URL from a Specific Route | 在视图中生成输出URL|高级路由特性

后面Length=5 是怎么出现的?

Laravel HTTP 路由

路由配置文件 定义:路由是指分析来自客户端请求的统一资源标识符(URI),根据设定的规则将请求分发至期待的处理逻辑(匹配请求地址),这一规则就是路由规则,而这一过程就是路由. Route::get('/', function() { return view('index'); }); 我们访问 http://yourdoamin/ 会显示渲染后的视图文件 index 的内容.这对于制作一个网站首页而言,十分简明,不需要再额外创建控制器.当然,如果首页是一类组织方法中的一部分,也可以用控制器实现.