2. Laravel视图View和路由Route初探 - Laravel从零开始教程

news/2023/12/1 8:47:55 标签: php, postman

在程序界最熟悉的莫过于"Hello World",通过输出"Hello Word",我们能了解路由和最基础的视图,这一小节,我们主要是学习下如何创建路由,如何加载视图,这节非常简单,跟着做就行。

上一节我们通过laravel new 项目名安装了Laravel 5.3的框架(默认安装最新版本的框架), 因为5.3的目录结构稍许有点变化,我们再安装一个laravel 5.2的框架,通过5.2版本来演示。

➜  cd /usr/local/var/www  # 进入到我们想要安装Laravel5.2框架的路径  
➜  laravel new Laravel52 --5.2  #通过Laravel install工具安装Laravel 5.2

然后,进入Laravel52 目录,用sublime打开Laravel52项目

➜ cd Laravel52
➜ subl .

打开如下:
打开Laravel52项目

如果是第一次接触Laravel框架,面对着这么多已经存在的目录,肯定是有点不知所措的,比如说app目录下的Providers,Policies等,这么文件夹的作用是什么呢?我们刚开始学的时候,不用想着一下子全弄明白,可以从最基础的开始,只要我们可以用Laravel去做点什么的时候,边做边学,那就不会觉得Laravel框架不易上手了。

ok,下面我们就来看下路由,打开app->Http->route.php,通过route这个名字我们就知道路由(url)文件应该写在这里,所有的HTTP请求我们都会通过这个文件来分发出去。

当我们打开route.php文件的时候,里面自带了这样的一个函数:

php">Route::get('/', function () {
    return view('welcome');
});

上面这句代码我们使用了Route这个类的get方法,并传入两个参数给它,第一个参数是我们要设置的uri,这里我们定义成/,通常都是访问到网站的主页,第二个参数是一个闭包函数,当然在正式开发的时候我们传入的第二个参数都是一个控制器类加上该类中的一个方法,如:

php">Route::get('/', 'PagesController@home'); #PagesController是一个控制器类,home是该类下面的一个方法。

我们暂时不去考虑控制器类,这不是本节要学习的内容,我们还是回头来看上面的闭包函数中的这句话:

php">return view('welcome');

这里的view()函数,就可以对应我们要显示的视图层了,当中的welcome是视图文件的名称,我们可以在resources->views下找到welcome.blade.php这个文件,该文件就是上面代码要显示的view层页面了,那么上面的代码的意思就是下面这样的:

php">return view('welcome.blade.php');

当然上面这样的代码运行时是会报错的,laravel运行view('welcome')函数的时候,会自动去找welcome.blade.php这个视图文件,所以我们书写的时候,只需要写上.blade.php前面的单词即可。那么这里也许有人会有疑问,为什么视图文件要取名为xxx.blade.php呢,那是因为laravel的视图页面是使用blade模版引擎的,所以必须加上.blade.php的后缀,那什么是balde模版呢,这样说吧,你应该知道一个老掉牙的smarty模版吧,嗯,这样说你应该明白了。

我们打开welcome.blade.php文件,发现里面都是一些html代码,当然我们是可以在这个文件中书写php代码的,该文件默认的内容如下:

<!DOCTYPE html>
<html>
    <head>
        <title>Laravel</title>

        <link href="https://fonts.googleapis.com/css?family=Lato:100" rel="stylesheet" type="text/css">

        <style>
            html, body {
                height: 100%;
            }

            body {
                margin: 0;
                padding: 0;
                width: 100%;
                display: table;
                font-weight: 100;
                font-family: 'Lato', sans-serif;
            }

            .container {
                text-align: center;
                display: table-cell;
                vertical-align: middle;
            }

            .content {
                text-align: center;
                display: inline-block;
            }

            .title {
                font-size: 96px;
            }
        </style>
    </head>
    <body>
        <div class="container">
            <div class="content">
                <div class="title">Laravel 5</div>
            </div>
        </div>
    </body>
</html>

从上面的页面我们可以看出,这个页面就是显示一下Laravel 5这几个文字,我们下面就来运行一下Laravel, 还是打开终端,进入到我们的项目Laravel52目录中,然后我们执行php artisan serve命令

运行Laravel项目

我们打开浏览器,输入http://localhost:8000/

运行效果

我们的laravel第一个页面是跑起来了,但是肯定有人会对php artisan serve这条命令不理解,很多phper做php项目的时候都是写完代码,然后通过浏览器或者使用postman一阵调试,很少会使用到php的命令行模式。

如果用过php命令行模式,就不难理解,最简单的来说,我们查看php的版本php -v, 我们启用php的内置web服务器php -S,我们在命令行运行一段php代码php -r "echo 'Hello World';" , 或者我们在命令行运行一个php文件php -f "my_script.php",而php artisan则是一个更加强大的命令行工具.我们可以执行下php artisan这条命令,它会帮我们列举出artisan的命令,都有对应的英文解释,这里大家一定要去先看看,了解一下,因为以后我们会经常用到这个artisan,你会发现它是多么的强大,多么的好用.

到现在为止,我们几乎还没有写过一句代码,下面我们来尝试写一段,打开route.php文件, 我们修改一下之间的代码如下:

php">Route::get('/', function () {
    return 'Hello World';
});

在Laravel中,我们可以返回view(),也可以直接返回一个字符串到页面上,我们打开浏览器,还是输入http://localhost:8000/ 这时我们就能看见页面输出了久违的Hello World了。(如果你关闭了php内置的web服务器,你还需要用终端在项目根目录下执行php artisan serve 命令来启动php的内置web服务器 )

那么如果我们想要定义一个http://localhost:8000/about的路径呢,我们可以这么写:

php">Route::get('about', function () {
    return 'About Page';
});

打开浏览器,输入http://localhost:8000/about页面就能显示About Page的这几个文字了。

下面,我们来试下使用view(),将函数改成下面这样:

php">Route::get('about', function () {
    return view('about');
});

然后,我们需要到resources->views目录下新建一个about.blade.php的文件,我们可以复制welcome.blade.php文件中的内容,然后将

<div class="title">Laravel 5</div>

改成

<div class="title">About Page</div>

上面的代码是肯定能运行的,这里我就不截图了,通常情况下,我们的视图文件都会分类放在某一个文件夹下面,而不会直接放在resources/views目录下,比如说我们的路径是这样的resources/views/pages/about.blade.php

pages/about页面

那么我们的路由文件中应该这么写:

php">Route::get('about', function () {
    return view('pages.about'); # 这里的pages代表目录,about是代表文件
});

当然了,你也可以这么写:

php">Route::get('about', function () {
    return view('pages/about'); # 这里的pages代表目录,about是代表文件
});

不过laravel官方是推荐我们view('pages.about');这么写,这样代码看上去会美观很多。

好了,我们刷新下浏览器

显示about page

好了,到现在我们已经学习了Laravel的路由和视图的一些东东了,本节到这里结束了。

从零开始学Laravel教程目录


http://www.niftyadmin.cn/n/1795425.html

相关文章

【Reference Reading】MRI-only放射治疗的synthetic CT 生成方法的系统综述

题目&#xff1a;Systematic Review of Synthetic Computed Tomography Generation Methodologies for Use in Magnetic Resonance Imaging-Only Radiation Therapy 杂志&#xff1a;International Journal of Radiation Oncology*Biology*Physics 论文地址&#xff1a;http…

在EF下使用基于T4模版的POCO实体生成器(转)

在EF下使用基于T4模版的POCO实体生成器 在Entity Framework 4.0提供了对POCO(简单传统CLR对象/Plain Old CLR Object)支持,这样让我们专注于业务逻辑和更有效的进行单元测试.并且POCO不需像默认EF实体一样要继承才能实现,所以可以更灵活的切换. 本文将介绍如何自动生成POCO并替…

UITextField(一)监听输入内容的变化(随手记)

//添加事件UIControlEventEditingChanged [textField addTarget:self action:selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; // - (void)textFieldDidChange:(UITextField *)textField{} 转载于:https://www.cnblogs.com/zhaobobo/p/6051201…

【C++】成员函数/变量的访问控制(访问标号)和继承

在基类中&#xff0c;public和private标号具有普通含义&#xff1a;用户代码可以访问类的public成员而不能访问private成员&#xff0c;private成员只能由基类的成员和友元访问(即如需访问private成员&#xff0c;可通过自定义接口/访问函数的方式return该成员&#xff0c;或者…

置顶问题

我用IE单独打开很多页面&#xff0c;每个页面都是定时刷新的&#xff0c;如果有新的数据刷新到页面上&#xff0c;就让那么页面自动置顶显示&#xff1f;大家有没有好的解决方法&#xff1f; 转载于:https://www.cnblogs.com/mokingone/archive/2012/12/18/9109032.html

【C++】虚函数 virtual

定义虚函数&#xff1a;为了指明函数为虚函数&#xff0c;在其返回类型前面加上保留字virtual&#xff0c;目的是启用动态绑定。 继承层次的根类一般都要定义虚析构函数。 成员默认为非虚函数&#xff0c;对非虚函数的调用在编译时确定。除构造函数外&#xff0c;任意非stati…

GMLab实验室背后的技术灵魂:DIVA、3D扫描仪和光场的拍摄设备

给记者体验的VR设备在今天下午的媒体中心&#xff0c;除了让记者体验到VR购物外&#xff0c;淘宝移动平台资深总监庄卓然还分享了GMLab实验室背后的技术灵魂---造物神计划&#xff0c;分别通过DIVA、3D扫描、光场扫描三种产品实现不同程度的3D建模解决方案。DIVA能够将固定的产…

sharepoint 2010如何隐藏.添加.禁用.Ribbon菜单中的项,多个方法

1. 一个是比较简单的就是在管理中心设置下&#xff0c;http://管理中心地址/_admin/vsmask.aspx下会显示列表权限、网站权限、个人权限&#xff0c;根据需要显示相应的项。 2. 就是通过操作代码操作xml里面的项&#xff0c;在Ribbon菜单里添加自定义Button。新建项目》添加空元…

【C++】优化内存分配

1.将内存分配与对象构造分离开。 allocator类是一个模板&#xff0c;提供类型化的内存分配以及对象构造与撤销。当allocator对象分配内存的时候&#xff0c;它分配适当大小并排列成保存给特定类型对象的空间。但是它分配的内存是未构造的&#xff0c;allocator的用户必须分别c…

博客成长日记

2012-12-19修复评论名可以插入html代码的bug 2012-12-18为评论增加邮件通知的功能 2012-12-17小幅调整首页显示UI&#xff0c;修复几个浏览器兼容问题 2012-12-12 至 2012-12-15添加富文本编辑器和代码高亮显示功能 2012-12-5博客在新浪SAE上线转载于:https://www.cnblogs.com/…

maven初试2

1.1、建立Hello项目 1、首先建立Hello项目&#xff0c;同时建立Maven约定的目录结构和pom.xml文件 Hello      | --src      | -----main      | ----------java      | ----------resources      | -----test      | ---------java   …

【C++】模板和泛型编程

1、模板 不用为每个类型定义一个新函数&#xff0c;而是只定义一个函数模板。函数模板是一个独立于类型的函数&#xff0c;可作为一种方式&#xff0c;产生函数的特定类型版本。 举例如下&#xff1a; 我们想要编写一个函数比较两个值&#xff0c;并指出第一个值是大于&…

silverlight自定义控件之时间范围选择控件

silverlight自定义控件之时间范围选择控件 原文http://www.cnblogs.com/lijie198871/archive/2012/12/10/2805086.html 其实这样的控件在很多网站都有类似的&#xff0c;但本人没有找到silverlight版本的&#xff0c;只能自己动手开发了&#xff0c;还花了三天的工作量。 在讲具…

iOS系统3DTouch全解析

iOS系统3DTouch全解析 概述 iOS10系统登录中国,在系统中对3D Touch的使用需求更频繁,所以对iOS9中便引入的3D Touch功能做一些了解是很有必要的 在日常开发中,我们经常需要使用3D Touch中的两个功能 在主屏幕上对应用图标使用3DTouch操作 在应用程序内对某一控件使用3DTouch操…

【Medical physics】CT的空间和密度分辨率

这两个指标用于判断CT性能和说明图像质量。 1.空间分辨率&#xff08;spatial resolution&#xff09;&#xff1a;密度分辨率大于10%时&#xff0c;影像中能显示的最小细节。与像素大小有关一般为像素宽度的1.5倍&#xff0c;像素越小&#xff0c;数目越多&#xff0c;空间分…

【Reference Reading】结合B和Gd的中子俘获治疗的剂量增强评估

论文&#xff1a;EVALUATION OF THE DOSE ENHANCEMENT OF COMBINED10B 157GD NEUTRON CAPTURE THERAPY (NCT2015) Abstract 研制了一种新型硼中子俘获治疗分子&#xff0c;GdBLDL&#xff0c;并对硼中子俘获治疗的有效性进行了研究&#xff0c;BNCT载体目前正在用小动物肿瘤…
最新文章