精华内容
下载资源
问答
  • 2021-04-15 13:51:08

    路由

    修改routes/web.php,增加

    Route::get('jump','Fore\ForeController@jump');

    控制器

    在app/Http/Controllers/Fore/目录下创建ForeController.php

    namespace App\Http\Controllers\Fore;

    use App\Http\Controllers\Controller;

    use Session;

    class ForeController extends Controller

    {

    public function jump(){

    $message=Session::get('message')?Session::get('message'):'返回首页';

    $url=Session::get('url')?Session::get('url'):'/';

    $time=Session::get('time')?Session::get('time'):5;

    return view('fores.jump',[

    'url' => $url,

    'message' => $message,

    'time' => $time,

    ]);

    }

    }

    调用跳转

    //login

    public function login(){

    if(Auth::user()) return redirect('jump')->with(

    [

    'url' => 'http://www.deadnine.com',

    'message' => '您已登录,即将为您返回首页',

    'time' => 10,

    ]

    );

    return "没有登录...";

    }

    前端页面

    {{$message}},将在{{$time}}秒后自动跳转

    $(function(){

    var url = "{{$url}}"

    var timeRemain = parseInt($('.time').text());

    var time = setInterval(function(){

    timeRemain = timeRemain-1;

    $('.time').text(timeRemain);

    if(timeRemain==0){

    clearInterval(time);

    window.location.href=url;

    }

    },1000);

    })

    其他实现

    如果中转页面使用不频繁,也可以考虑不用中转页面跳转,也可以通过简单的方法实现。

    发送跳转请求:

    return redirect('/')->with('message', 'Message sent!');

    在view中接收:

    @if(Session::has('message'))

    {{Session::get('message')}}

    @endif

    OVER

    更多相关内容
  • laravel 自动跳转页面

    2021-04-16 15:08:19
    问题 一输入http://localhost/auth/login 或者 http://localhost/auth/register 就会自动跳转到http://localhostLaravel版本信息"name": "laravel/laravel","description": "The Laravel Framework.","keywords": [...

    问题 一输入http://localhost/auth/login 或者 http://localhost/auth/register 就会自动跳转到http://localhost

    Laravel版本信息

    "name": "laravel/laravel",

    "description": "The Laravel Framework.",

    "keywords": ["framework", "laravel"],

    "license": "MIT",

    "type": "project",

    "require": {

    "php": ">=5.5.9",

    "laravel/framework": "5.2.*",

    "laravelcollective/html":"5.2.*"

    },

    http://localhost/auth/register 页面

    <div class="col-md-4 col-md-offset-4">

    {!! Form::open(["url"=>"/auth/register"]) !!}

    <div class="form-group">

    {!! Form::label('name', 'Name:') !!}

    {!! Form::text('name', null, ['class' => 'form-control']) !!}

    </div>

    <div class="form-group">

    {!! Form::label('email', 'Email:') !!}

    {!! Form::email('email', null, ['class' => 'form-control']) !!}

    </div>

    <div class="form-group">

    {!! Form::label('password', 'Password:') !!}

    {!! Form::password('password', ['class' => 'form-control']) !!}

    </div>

    <div class="form-group">

    {!! Form::label('password_confirmation', 'Password_confirmation:') !!}

    {!! Form::password('password_confirmation', ['class' => 'form-control']) !!}

    </div>

    {!! Form::submit('注册', ['class' => 'btn btn-primary form-control']) !!}

    {!! Form::close() !!}

    </div>

    http://localhost/auth/login 页面

    <div class="col-md-4 col-md-offset-4">

    {!! Form::open(["url"=>"/auth/login"]) !!}

    <div class="form-group">

    {!! Form::label('email', 'Email:') !!}

    {!! Form::email('email', null, ['class' => 'form-control']) !!}

    </div>

    <div class="form-group">

    {!! Form::label('password', 'Password:') !!}

    {!! Form::password('password', ['class' => 'form-control']) !!}

    </div>

    {!! Form::submit('登录', ['class' => 'btn btn-primary form-control']) !!}

    {!! Form::close() !!}

    </div>

    路由

    Route::group([‘middleware’ => [‘web’]], function () {

    Route::resource("articles", "ArticlesController");

    Route::get("auth/login", 'Auth\AuthController@getLogin');

    Route::post("auth/login", 'Auth\AuthController@postLogin');

    Route::get("auth/register", 'Auth\AuthController@getRegister');

    Route::post("auth/register", 'Auth\AuthController@postRegister');

    Route::get("auth/logout", 'Auth\AuthController@logout');

    Route::get('/', function () {

    return view('welcome');

    });

    });

    指定注册后跳转路径

    protected $redirectPath ="/articles";

    展开全文
  • PHP-laravel框架一1

    千次阅读 2022-01-13 14:20:20
    2、开发环境配置与要求 Laravel框架的运行对环境是有严格要求的。 php.ini配置文件需要开启的扩展: extension=...

    一、Laravel简介

    1、简介

    Laravel是一套简洁、优雅的PHP WEB开发框架(PHP Web Framework),具有富于表达性且简洁的语法,Laravel是易于理解且强大的,它提供了强大的工具用以开发大型,健壮的应用,例如具有自动验证、路由、Session、缓存、数据库迁移工具、单元测试等常用的工具和功能

    官网:https://laravel.com/
    中文官网:http://www.golaravel.com/
    中文社区:https://laravel-china.org/
    Laravel框架的广告语:
    为 WEB 艺术家创造的 PHP 框架

    目前大部分的框架公共的特点(了解):
    (1)单入口,所有的请求必须从单入口开始,主要是便于管理(统一的参数过滤)
    (2)MVC的思想(分层思想,主要是为了协同开发,实现后期的维护方便)
    (3)ORM操作数据库(Object Relations Model,关联模型):AR模式
    注意:Laravel框架有一个特点,所有的URL访问都必须事先定好路由规则。

    2、开发环境配置与要求

    Laravel框架的运行对环境是有严格要求的。
    在这里插入图片描述
    php.ini配置文件需要开启的扩展:
    extension=php_openssl.dll
    extension=php_pdo_mysql.dll
    extension=php_mbstring.dll
    extension=php_fileinfo.dll(验证码代码依赖需要该扩展)
    extension=php_curl.dll(主要用于请求的发送)

    在这里插入图片描述
    httpd.conf配置文件需要开启的模块:
    LoadModule deflate_module modules/mod_deflate.so
    LoadModule rewrite_module modules/mod_rewrite.so

    如果php的版本不满足基本要求需要升级,则有2个方法可供使用:
    a. 使用带有符合要求的php版本的集成环境替换当前环境(phpstudy),如当前数据库的数据仍需要,则需要备份下数据库,在装好新的环境之后导入备份的数据库;
    b. apache、mysql不做任何替换操作,单独的下载符合要求的版本php,替换原先低版本的php;
    c. 建议php使用php7+版本

    3、PHP的注意事项(重要)

    ①在php安装好之后需要将php.exe的位置的目录添加到环境变量中去(如果之前有加过别的版本的php环境变量则需要删除掉);
    ②得确保在添加环境变量之后,通过命令“php -v”运行得到的结果中php版本号与实际运行的版本号一致;

    将PHP加入环境变量(目录):
    命令行PHP版本检测运行结果(如果使用集成环境,则要求命令行显示php版本要与集成环境的版本一致):
    在这里插入图片描述

    4、composer介绍

    (1)什么是composer

    composer英文单词意思:音乐指挥者
    composer是PHP中用来管理依赖(dependency)关系的工具,你可以在自己的项目中声明所依赖的外部工具库(libraries),composer会帮您安装这些依赖的库文件。
    一句话,composer是一个工具,是为php项目准备的软件管家。
    工作原理:
    在这里插入图片描述
    如上图,composer可以去packagist应用市场 里边下载软件,但是该市场只给返回软件的地址,对应的软件都是在github里边存储的,最终下载的软件是从github返回的。
    https://packagist.org

    官方网站:https://getcomposer.org
    下载地址:https://getcomposer.org/download/
    在这里插入图片描述

    (2)composer安装使用

    注意前提条件:
    开启PHP中openssl扩展。
    安装composer需要明确php.exe的文件路径。
    安装 composer需要联网

    ①运行composer安装程序
    在这里插入图片描述

    ②直接下一步
    在这里插入图片描述
    ③选择需要使用的php所在路径(如果显示不正确,可以点击浏览自行选择)
    在这里插入图片描述
    ④代理设置(默认不设置代理)
    在这里插入图片描述
    ⑤直接下一步
    在这里插入图片描述
    ⑥继续下一步
    在这里插入图片描述
    ⑦完成安装
    在这里插入图片描述
    安装完成后,进入到命令提示符(cmd),运行“composer”,如果出现如下提示,则安装完成。
    在这里插入图片描述
    在这里插入图片描述

    (3)使用composer方式部署laravel项目

    第一步:切换镜像(软件下载地址)为国内镜像【建议】
    镜像官网:
    https://developer.aliyun.com/composer

    通过composer可以去packagist.org市场 和 github代码库 下载功能代码
    但是packagist和github对应的服务器都部署在国外。
    这时“镜像”应运而生,其是把存储在packagist和github等外国服务器上的全部内容定期(更新比较及时,几分钟的延迟)同步到国内服务器里边,使得广大开发者可以不用绕远到外国,相反在自己国家就可以把软件更新到自己的项目中,方便了composer的使用。
    在这里插入图片描述
    给composer配置镜像:
    修改 composer 的全局配置文件(推荐方式)
    #composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
    在这里插入图片描述
    第二步:composer部署laravel项目【重点】。
    #composer create-project laravel/laravel --prefer-dist ./
    命令含义:
    composer:表示需要执行composer
    create-project:表示需要通过composer创建一个项目
    laravel/laravel:创建一个Laravel项目
    –prefer-dist:表示强制使用压缩包方式下载(省时间)
    ./或者其他名称:表示项目需要创建的路径【在创建项目的时候一定要确保路径目录为空】
    例如:需要创建一个Laravel项目
    在这里插入图片描述
    在这里插入图片描述
    上述命令默认安装的是当前镜像网站中最新的版本:5.5.28。

    比如创建一个名为shop的laravel项目
    #composer create-project laravel/laravel --prefer-dist shop
    运行composer的时候需要注意,在什么地方运行(命令行的当前工作路径)composer则就会在什么地方创建项目。

    注意,如果要下载其他版本,比如5.4版本中最新版本号(用表示),可以使用这个命令
    #composer create-project laravel/laravel=5.4.
    --prefer-dist ./
    在这里插入图片描述
    #composer create-project laravel/laravel=5.5.28 --prefer-dist ./ 指定版本

    5、目录结构分析

    在这里插入图片描述
    (1)app目录:项目的核心目录,主要用于存放核心代码,也包括控制器、模型、中间件。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    (2)bootstrap目录,laravel启动目录
    (3)config目录,项目的配置目录,主要存放配置文件,比如数据库的配置
    app.php:全局配置文件,在后期开发的时候需要频繁的使用这个配置文件;
    auth.php:用户登录时候需要用到的用户认证模块的配置文件;
    database.php:数据库的配置文件;
    filesystems.php:文件系统(如文件存储等)的配置文件;
    (4)database目录,数据迁移目录
    factories:存放一些工厂模式需要用的一些文件;
    migrations:迁移,存放的是迁移文件(创建/删除/修改数据表操作的类文件);
    seeds:播种、种子,存放的是种子(填充器)文件(模拟向数据表中写入数据的操作类
    (5)public目录,项目的入口文件和系统的静态资源目录(css,img,js,uploads)
    后期使用的外部静态文件(js、css、图片等)都需要放到Public目录下
    并且后期的网站的根目录也是这个目录(apache的documentroot目录为该目录路径)

    (6)resources目录,存放视图文件,还有就是语言包文件的目录
    language:存储语言包的目录;
    views:视图文件存储目录;

    (7)routes目录,是定义路由的目录,web.php是定义路由的文件
    (8)storage目录,主要是存放缓存文件和日志文件,注意,如果在linux环境下,该目录需要有可写权限。(后期用户上传文件如果存在本地则也在storage下)

    app:保存用户上传文件的路径;
    framework:框架自带的文件存储目录;
    logs:框架的日志文件存储位置;
    (9)vendor目录,主要是存放第三方的类库文件,laravel思想主要是共同的开发,不要重复的造轮子(例如,里面可能存在验证码类,上传类,邮件类),该目录还存放laravel框架的源码。注意如果要使用composer软件管理的,composer下载的类库都是存放在该目录下面的。
    (10).env文件:主要是设置一些系统相关的环境配置文件信息。config目录里面的文件配置内容一般都是读取该文件里面的配置信息(config里面的配置项的值基本都是来自.env文件)。

    (11)artisan脚手架文件,主要用于生成的代码的(自动生成),比如生成控制器,模型文件等。

    执行命令:#php artisan 需要执行的指令
    要求1:php必须添加环境变量,并且保证版本;
    要求2:artisan必须存在命令行当前的工作路径下;

    (12)composer.json依赖包配置文件
    声明当前需要的软件依赖,但是不能删除,composer需要使用。

    需要重点掌握的目录(频繁使用)

    目录作用
    app保存模型文件(默认)
    app/Http/Controllersapp/Http/Controllers
    resources/views保存视图文件
    config配置文件目录
    routes存放路由文件
    database/migrations存放数据库迁移文件(操作数据表结构)
    database/seeds存放数据库种子文件(模拟测试数据)

    6、启动方式

    方式一:Laravel框架提供了更简单的方式启动项目(相比配置apache)
    执行命令:#php artisan serve

    在这里插入图片描述
    不推荐使用:
    ①能够跑php代码,但是不启动数据库。
    ②该方式启动后,如果修改了项目的配置.env的话,则需要重新启动才会生效。
    ③如果使用命令行方式进行启动,则如果想继续访问页面,需要命令行不能关闭。
    方式二:使用 wamp或lamp环境(常见)
    虚拟主机配置:(虚拟主机 ≠ 虚拟机)

    在这里插入图片描述
    通过浏览器测试访问:
    http://i-lynn.cn/
    在这里插入图片描述

    二、Laravel入门使用(路由)

    什么是路由:将用户的请求按照事先规划的方案提交给指定的控制器或者功能函数来进行处理.【通俗的讲,路由就是访问地址形式】
    在博客中,当我们在URL地址中,传递p(平台)、c(控制器)、a(方法)三个参数时,系统会自动跳转到指定模型中指定控制器的指定方法,这些处理过程都是由框架自动完成的。但是,在Laravel框架中,其并没有指定固定参数,其路由必须要手工进行配置。

    1、路由配置文件位置

    路由文件在routes/web.php。
    在这里插入图片描述
    后续我们自己定义的路由都需要在该文件中去声明。

    2、routes\web.php配置文件中配置路由(重点)

    (1)默认根路由
    问题:为什么当我们在浏览器中访问虚拟域名http://域名时,如何显示Laravel5?
    答:原因是在路由文件web.php中,其已经定义好了一个路由,这个路由称之为“根路由”,一般用于访问网站的首页。
    在这里插入图片描述

    (2)路由定义格式:
    Route::请求方式(‘请求的URL’, 匿名函数或控制器响应的方法)
    比如请求域名下根目录
    Route::get(’/’,function(){return ‘hello world’;});
    函数的返回值,就是请求的响应。
    在这里插入图片描述
    页面上的显示:
    在这里插入图片描述
    又比如请求:http://域名/home地址则路由写成:
    Route::get(’/home’,function(){return ‘您当前访问的是/home地址’;});
    显示:
    在这里插入图片描述
    在这里插入图片描述
    注意:路由地址中的第一个“/”可以不写(包括“根路由”)。

    如果还有更多的路由需要去定义,则仿照上述的形式语法继续编写即可。但是只要需要访问,则必须需要定义路由。
    如果路由错误或者没有定义则会看到以下错误页面(以Laravel5.4.30为准)
    在这里插入图片描述
    如果是5.5以后的版本,则提示如下:
    在这里插入图片描述
    (3)请求方式有哪些?
    在这里插入图片描述
    如果要解决“”这样的问题,则需要下面的两个方法解决:
    在这里插入图片描述
    常见的四个方法:
    get方法:表示匹配请求类型为get的请求;
    post方法:表示匹配请求类型为post的请求;
    macth方法:表示匹配用户指定的几个请求类型(通过第一个参数去指定)的请求;
    语法:Route::match([‘get’,’post’,’…’], u r l , url, urlcalback);
    any方法:表示匹配路由所支持的全部请求类型;

    如果路由方法与实际的请求类型不一致,则会报错
    在这里插入图片描述
    在5.5及以后的版本中报错如下:
    在这里插入图片描述

    3、路由参数

    使用路由需要public目录下.htaccess文件设置apache重写路由

    <IfModule mod_rewrite.c>
        <IfModule mod_negotiation.c>
            Options -MultiViews -Indexes
        </IfModule>
    
        RewriteEngine On
    
        # Handle Authorization Header
        RewriteCond %{HTTP:Authorization} .
        RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    
        # Redirect Trailing Slashes If Not A Folder...
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_URI} (.+)/$
        RewriteRule ^ %1 [L,R=301]
    
        # Handle Front Controller...
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^ index.php [L]
    </IfModule>
    
    

    路由参数其实就是给路由传递参数。
    参数分为必选参数和可选参数。

    必选参数:一旦在路由中定义了,则必须传递,不传递就会报错。
    例如:
    Route::get(‘home1/{id}’,function($id){
    echo ‘输入的id是’ . $id;
    });

    路由参数的传递通过路由地址中的“{参数名}”的形式来进行传递,该形式是必选参数的形式,可以选的则使用“{参数名?}”。
    在这里插入图片描述
    如果设定了可选路由参数,但是又没有给默认值同时也没传递,则报错:
    在这里插入图片描述
    扩展:
    路由参数除了上述的2种传递方式之后,还支持传统的路由参数传递:
    url?id=xxx&aaa=xxxx
    这种方式传递参数不受路由的限制的,不需要在路由文件中事先定义好路由参数,例如:
    在这里插入图片描述
    在这里插入图片描述

    4、路由别名(alias)【重点】4、路由别名(alias)【重点】

    路由别名相当于在路由定义的时候,为路由起了一个别名,在以后的程序中可以通过这个别名来获取路由的信息。/absafvdsadssdbfdsfa/qwdasd1312213fberfdvf/ascdfadvs => url1
    后期在视图中会频繁使用到这样的代码“xxxx
    场景:在后期需要频繁的定义跳转地址,但是如果这些地址写死了的话,万一发生变化,得全部修改,这个操作比较麻烦,因此可以使用路由别名的机制(定义路由的时候给路由起名字,在后期需要使用路由的时候直接调用名字)去简化以后的操作。

    给路由起名字的语法:
    Route::请求类型(路由地址,响应方法) -> name(别名);

    例如:给hello的路由起名字“h1”
    在这里插入图片描述
    调用该路由则可以写成:route(‘名字’);例如像刚才的h1,则需要写成route(‘h1’)

    扩展补充:查看系统已经有的路由命令:#php artisan route:list
    在这里插入图片描述

    5、路由群组(理解)【实用】

    有后台有如下路由
    /admin/login
    /admin/logout
    /admin/index
    /admin/user/add
    /admin/user/del

    他们的共同点(这个共同点不局限于只是前缀)是,都有/admin/前缀,为了管理方便,可以把他们放到一个路由分组中,这个分组称之为路由群组。

    使用prefix属性指定路由前缀,也就是其路由中都具备的相同部分。

    语法:Route::group(公共属性数组,回调函数); 回调函数中放的剔除公共属性之后的路由

    比如,想要为所有路由URLs前面添加前缀admin

    Route::group(['prefix' => 'admin], function () {
        Route::get(login, function ()    {
            // 匹配 "/admin/login" URL
    	});
    	Route::get(logout, function ()    {
            // 匹配 "/admin/logout" URL
    	});
    	Route::get(user/add, function ()    {
            // 匹配 "/admin/user/add" URL
    	});
    });
    

    记住:以大局为重。

    案例:编写路由/home/test/test1和/home/test/test2,要求使用路由群组
    公共点:/home/test

    Route::group([‘prefix’ => ‘home/test’],function(){
    	Route::get(‘test1’,function(){
    
    	});
    	Route::get(‘test2’,1function(){
    
    	});
    });
    

    在这里插入图片描述
    注意:使用路由群组不会改变其原有在地址栏中输入的地址。变的只是路由定义的写法。

    在后期还会接触到middleware(中间件)属性。

    三、控制器使用©

    控制器主要的作用主要负责接收用户输入请求,调度模型处理数据最后利用视图展示数据。

    1、控制器文件写在哪里?

    其位置位于app/Http/Controllers
    在这里插入图片描述

    其中Auth存放的是框架自带的Auth认证相关的示例控制器文件,controller.php文件是框架的基类控制器。

    2、控制器文件如何命名?

    命名可以参考Auth文件夹中给定的示例文件:
    在这里插入图片描述
    文件的命名方式:大驼峰+Controller.php

    友情提示:在写的时候不要带“+”。

    3、结构代码如何书写?【重点】

    注意:其控制器基础结构代码,不需要自己去手动编写,可以通过artisan命令行来自动生成。
    因此需要记住对应的命令:

    #php artisan make:controller 控制器名(大驼峰)Controller
    

    不要写“.php”。

    例如:使用artisan命令创建TestController.php文件。先确定命令:
    #php artisan make:controller TestController
    在这里插入图片描述
    其中已经写好的结构代码:
    在这里插入图片描述
    后续如果需要更多的控制器只需要重复的执行上述的artisan命令即可。

    注意:控制器可以分目录管理。

    4、控制器路由(项目以该方式为主)

    即,如何使用路由规则调用控制器下的方法,而不再走回调函数。
    路由设置格式基本相同,只是将匿名函数换成‘控制器类名@方法名’
    定义格式如下:
    Route::请求方法(‘路由表达式’,’控制器@方法’);
    例如:在Test控制器中创建test1方法,其中输出phpinfo信息
    在这里插入图片描述
    编写路由规则:
    设定路由: /test1
    在这里插入图片描述
    效果如下:
    在这里插入图片描述

    5、接收用户输入【重点】

    接收用户输入的类:Illuminate\Support\Facades\Input
    Facades:"门面"的思想。门面是介于一个类的实例化与没有实例化中间的一个状态。其实是类的一个接口实现。在这个状态下可以不实例化类但是可以调用类中的方法。说白了就是静态方法的调用。

    Input:get('参数的名字','如果参数没有被传递使用该默认值'); //类似php里三元运算符
    Input::all();获取所有的用户输入
    Input::get('参数的名字');获取单个的用户的输入
    Input::only(['id','age']);获取指定几个用户的输入
    Input::except(['id','age']);获取指定几个用户的输入以外的所有的参数
    Input::has('name');判断某个输入的参数是否存在
    

    上述方法既可以获取get中的信息,也可以获取post中的信息

    在laravel中如果需要使用facdes的话,但是又不想写那么长的引入操作:
    Use Illuminate\Support\Facades\Input
    则可以在config/app.php中定义长串的别名(在aliases数组中定义别名)
    在这里插入图片描述
    案例:在/test2路由下测试上述的方法
    在这里插入图片描述
    定义路由:
    /test2
    在这里插入图片描述
    编写test2方法测试上述的获取信息的操作:
    给test2路由传递一系列的参数(get传值)
    在这里插入图片描述

    在Laravel中友好输出函数:dd(需要打印的内容);
    dd=dump + die
    dd函数之后的内容将不会继续执行;

    在Laravel中除了Input类可以获取用户的输入,Request也可以获取用户输入。

    四、DB类操作数据库(重点)

    按照MVC的架构,对应的操作应该放在Model中完成,但如果不使用Model,我们也可以用laravel框架提供的DB类操作数据库。而且,对于某些极其复杂的sql,用Model已经很难完成,需要开发者自己手写sql语句,使用DB类去执行原生sql。laravel 中DB类的基本用法 DB::table(‘tableName’)获取操作tableName表的实例(对象)。

    1、数据表的创建与配置

    建立数据库:
    建立数据库的方式:
    ①sql语句
    ②图形界面 phpMyAdmin Navicat

    在这里插入图片描述
    在这里插入图片描述
    (1)创建数据库和测试表

    
    create table member(
        id int primary key auto_increment,
        name varchar(32) not null,
        age tinyint unsigned not null,
    email varchar(32) not null
    )engine myisam charset utf8mb4;
    
    

    在这里插入图片描述
    (2)数据库在laravel框架中的配置
    在.env文件里面,
    在这里插入图片描述
    也可以在config目录下面的database.php文件里面配置。使用env函数,表示先从env环境里面读取,如果获取成功则使用,如果获取失败,则使用env函数的第二个参数。
    注意:如果是php artisan serve 方式启动的,修改了配置文件,则需要重新启动,才能读取修改后的配置文件:如果是wamp/lamp等环境则不需要重启。

    (3)在Test控制器中引入DB门面;

    在这里插入图片描述
    (4)定义增删改查需要的路由;
    增加: /add get
    删除: /del get
    修改: /mod get
    查询: /select get
    在这里插入图片描述

    2、增加信息(insert)

    对数据库中的某个表增加数据主要有两个函数可以实现,分别是insert()和insertGetId()

    insert(数组)可以同时添加一条或多条,返回值是布尔类型
    insertGetId(一维数组),只能添加一条数据,返回自增的id

    语法:DB::table(‘表名’) -> insert(); 连贯操作/链式操作
    在这里插入图片描述

    3、修改数据( update)

    数据修改可以使用update()、inscrement()和decrement()方法来实现。
    ①Update方法表示可以修改整个记录中的全部字段;
    ②Increment和decrement表示修改数字字段的数值(递增或者递减),典型应用:记录登录次数、积分的增加。
    案例:把id=1的名称,改名为 ‘张三丰’
    -> where() -> update([])
    注意:where方法之后可以继续调用where之类的方法。
    -> where() -> where() ->where() … 这个语法是并且 (and) 关系语法。

    -> where() -> orWhere() -> orWhere()… 这个语法是或者 (or) 关系语法。

    Orwhere方法的参数与 where一致。
    Where参数顺序:
    -> where(字段名,运算符,字段值)。例如id=1,则可以写成:where(‘id’,’=’,1),简写成Where(‘id’,1); 【只有=可以简写】
    在这里插入图片描述
    返回值,表示受到影响的行数
    在这里插入图片描述
    案例:把id=1的用户年龄字段值加10;【了解】
    DB::table(’ member’)->increment(‘age’); 每次+1
    DB::table(’ member’)->increment(‘age’, 5); 每次+5
    DB::table(’ member’)->decrement(‘age’); 每次-1
    DB::table(’ member’)->decrement(‘age’, 5); 每次-5
    在这里插入图片描述

    4、查询数据(get)

    (1)取出基本数据

    案例1:获取member表中所有的数据
    DB::table(‘member’)->get(); //相当于select * from member;
    返回值是一个集合对象,

    返回值:

    完成遍历取出的数据:
    在这里插入图片描述
    注意:Get查询的结果每一行的记录是对象的形式,不是数组。

    由于每一条记录都是一个对象,因此在循环或者访问字段的值的时候需要使用对象调用属性的方式进行访问,不能再用数组形式进行访问。否则就会报以下错误:
    在这里插入图片描述

    案例2:获取id<3的数据
    ->where()->get();

    在这里插入图片描述
    在这里插入图片描述

    (2)取出单行数据

    DB::table(‘member’)->where(‘id’,‘1’)->first();//返回值是一个对象
    等价于limit 1

    在这里插入图片描述
    在这里插入图片描述

    (3)获取某个具体的值(一个字段)

    DB::table(‘member’)->where(‘id’,‘1’)->value(‘name’);
    在这里插入图片描述
    在这里插入图片描述

    (4)获取某些字段数据(多个字段)

    $users = DB::table(‘member’)->select(‘name’, ‘email’)->get();
    $users = DB::table(‘member’)->select(‘name as user_name’)->get();
    $db -> select(DB::raw(‘name,age’)) -> get(); // 不解析字段,原样使用
    在这里插入图片描述
    在这里插入图片描述
    注意:有多少个字段就有多少个参数(select方法),除了DB::raw之外。

    (5)排序操作

    DB::table(‘member’)->orderBy(‘age’,‘desc’)->get(); desc降序 asc 升序 默认升序
    在这里插入图片描述
    在这里插入图片描述

    (6)分页操作

    DB::table(‘member’)->limit(3)->offset(2)->get();
    Limit:表示限制输出的条数(分页中每页显示记录数)
    Offset:从什么地方开始
    组合起来等价于limit 2,3 limit 3(offset),2(length)
    在这里插入图片描述
    归纳:具体的查询等操作方法一般都是放在连贯操作的最后。辅助方法可以放在中间,并且其先后顺序是无所谓的。
    在这里插入图片描述

    5、删除数据(delete)【了解】

    在删除中,有两种方式:物理删除(本质就是删除)、逻辑删除(本质是修改)

    数据删除可以通过delete函数和truncate函数实现,
    delete表示删除记录;
    truncate表示清空整个数据表;
    DB::table(‘table_name’)->where(‘id’,‘1’)->delete();

    例如:删除id小于3的记录

    在这里插入图片描述
    返回值表示删除的行数:
    在这里插入图片描述
    【补充:truncate】
    语法:DB::table(‘member’) -> truncate();

    6、执行任意的SQL语句(补充了解)

    (1)执行原生查询语句
    DB::select(“select语句”);

    (2)执行原生插入语句
    DB::insert(“insert语句”);

    (3)执行原生修改语句
    DB::update(“update语句”);

    (4)执行原生删除语句
    DB::delete(“delete语句”);

    (5)执行一个通用语句(没有返回值的语句,例如:create table等)
    DB::statement(“语句”);

    五、视图操作【重点】

    1、视图写哪里?

    在这里插入图片描述
    注意:
    a. 视图可以分目录管理
    b. 视图的后缀在laravel中一般一般都是“.blade.php”
    c. 视图的创建无法通过artisan来实现

    2、视图文件的命名与渲染

    (1)文件名习惯小写(建议小写)
    (2)文件名的后缀是 .blade.php(因为laravel里面有一套模板引擎就是使用blade,可以直接使用标签语法{{ $title }}, 也可以使用原生的php语法显示数据。)
    (3)需要注意的是也可以使用.php结尾,但是这样的话就不能使用laravel提供的标签{{ $title }}语法显示数据,只能使用原生语法 <?php echo $title;?> 显示数据
    两个视图文件同时存在,则.blade.php后缀的优先显示。

    案例:编写一路由地址,调用Test控制器的test3方法,展示视图test3文件(创建2个,一个以.blade.php结尾,另外一个.php结尾)【验证优先级】
    创建对应路由:
    /test3
    在这里插入图片描述

    编写控制器方法:
    展示视图的方法:
    return view(‘视图文件的名称’);

    视图可以进行分目录管理的,例如需要展示home/test/test2视图,则可以写成:
    return view(‘home/test/test2’) 当然也支持点写法:view(‘home.test.test2’)
    展示方法:
    在这里插入图片描述
    没有视图文件报错:
    在这里插入图片描述
    新建2个视图(一个以“.blade.php”结尾,一个是“.php”结尾)最终展示的是.blade.php文件
    在这里插入图片描述

    3、变量分配与展示

    语法:
    ①view(模板文件名称,数组) 数组就是需要分配的变量集合,数组是一个键值数组,其键与变量名尽量一致
    ②view(模板文件名称)->with(数组)
    ③view(模板文件名称)->with(名称,值)->with(名称,值)…
    使用view()方式渲染一个视图后,在.blade.php的视图文件中,模板中输出变量使用“{{ $变量名 }} ”(变量名就是分配过来数组的键)

    案例:需要将控制器方法中的时间(年月日时分秒)数据传递到视图中去,并且输出
    创建test3方法

    在这里插入图片描述
    创建模版页面:
    在这里插入图片描述
    输出效果:
    在这里插入图片描述
    提示:变量在视图中展示的时候,在原先PHP文件中怎么写,在视图中依旧按照原先的方式进行编写,只需要写好之后在最外层套2个“{ }”即可。例如对于时间戳的格式化:
    在这里插入图片描述

    4、扩展:compact函数使用(传参)

    Compact函数,是php内置函数跟laravel框架没有关系。作用主要是用于打包数组的。
    语法:compact(‘变量名1’,’变量名2’,…);
    在这里插入图片描述
    因此刚才3中的案例还可以写成:
    在这里插入图片描述
    只是影响的是后台的数组打包,跟前台使用没有什么关系。

    5、循环与分支语法标签【重点】

    //在视图里面遍历数据【重点】
    在这里插入图片描述
    案例:使用循环标签的语法,在视图中输出数据
    新建路由:
    /test4
    在这里插入图片描述
    创建需要的test4方法
    在这里插入图片描述
    创建视图,视图中的循环输出:
    在这里插入图片描述
    显示效果:
    在这里插入图片描述
    需要注意的是,如果本身data是结果集的话,则循环到的value一般会是一个对象(此时不能使用“[]”访问数组的形式进行属性访问,而应该使用“->”形式)。

    //在视图里面可以执行if判断【重点】

    在这里插入图片描述
    案例:要求在php代码中(控制器的方法)动态输出今天的星期数字(1-7),将数字传递给视图,显示出今天是星期几,如假设传递的数字是7,则页面中要输出“星期天”【将数字转化成汉字】
    a. 先在控制器方法中输出当前的星期数字
    在这里插入图片描述
    在这里插入图片描述
    b. 需要在视图中获取数字,并且通过if判断输出今天的星期汉字
    在这里插入图片描述
    效果:
    在这里插入图片描述

    6、模版继承/包含【理解】

    在这里插入图片描述
    继承不仅仅在php类中存在,在视图中同样存在。一般是用于做有公共部分的页面。
    以上图为例,可以将头和尾单独的放到一个页面中去(父页面),可变的区域称之为叫子页面,如果子页面需要用到父页面的东西,则需要使用继承。

    问题:PHP父类中的方法能不能在子类中重写?

    案例:编写父级页面(父类),再编写一个子页面(子类)(相当于php中的两个类)
    编写父级页面:

    语法:@yield(‘名字’) 在父级页面中的占位,也就是空出可变区域

    在这里插入图片描述
    在父页面中,头尾是固定的,中间是可变的区域,由于内容不知道是什么,所以通过yield占位,等待子页面去补充(等待子页面重写yield区域)。

    再去创建子页面和其路由
    /test5
    在这里插入图片描述
    创建test5方法,展示视图
    在这里插入图片描述

    创建视图test5(只是展示可变区域)
    在这里插入图片描述
    继承语法:
    子模版中按以下语法书写:
    @extends(‘需要继承的模版文件名’) 其名称要是完整的路径,类似view视图路径
    通过section标签绑定区块/部件到父级页面,区块名称就是父级页面yield标签的参数名。
    @section(区块名称)
    代码
    @endsction
    在这里插入图片描述
    效果:
    在这里插入图片描述
    模版包含:
    语法:@include(模版文件名) 文件名不含后缀,语法类似view方法参数
    在这里插入图片描述

    六、CSRF攻击【重点】

    1、什么是CSRF攻击?

    CSRF是跨站请求伪造(Cross-site request forgery)的英文缩写:
    在这里插入图片描述
    Laravel框架中避免CSRF攻击很简单:Laravel自动为每个用户Session生成了一个CSRF Token,该Token可用于验证登录用户和发起请求者是否是同一人,如果不是则请求失败。【该原理和验证码的原理是一致】
    Laravel提供了一个全局帮助函数csrf_token来获取该Token值,因此只需在视图提交表单中添加如下HTML代码即可在请求中带上Token:

    <input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
    

    2、Laravel中如何避免CSRF攻击

    案例:通过案例实现csrf的机制验证
    ①创建两个路由,一个用于展示表单(get),另外处理请求(post)
    /test6 展示表单 get
    /test7 提交处理 post
    在这里插入图片描述
    ②创建需要的方法
    在这里插入图片描述
    ③创建需要的简易表单
    在这里插入图片描述
    ④提交效果(报错页面)
    在这里插入图片描述
    说明Laravel框架是默认开启了csrf认证的(必须)。

    ⑤解决报错问题(如何通过csrf验证)
    就是可以使用之前说的,可以在表单中添加一个隐藏域:
    在这里插入图片描述
    在html页面中显示如下:
    在这里插入图片描述
    {{csrf_token()}}:表示直接输出token值;
    {{csrf_field()}}:表示的是直接输出整个隐藏域的input框;

    第16行和第17行效果是等价的:
    在这里插入图片描述
    场景选择:一般在视图里用csrf_field即可,大部分的时候在JavaScript代码段中(特别是在做ajax异步提交的时候)可以考虑用csrf_token。

    添加了csrf的token之后,表单就可以正常的提交。
    在这里插入图片描述
    CSRF验证机制与图形验证码的原理是一致的,都是将用户提交的值与与session中的值进行比对,如果一致则通过,否则不通过。

    针对csrf_token与csrf_field的选择问题:
    如果只需要使用值(例如,在ajax的post提交的时候),则使用csrf_token,如果需要的是隐藏域(在表单里),则使用csrf_field。

    3、从CSRF验证中排除例外路由(了解)

    并不是所有请求都需要避免CSRF攻击,比如去第三方API获取数据的请求。
    可以通过在VerifyCsrfToken(app/Http/Middleware/VerifyCsrfToken.php)中间件中将要排除的请求URL添加到$except属性数组中:
    在这里插入图片描述
    排除写法:
    在这里插入图片描述
    说明:如果这个操作不是刚需,则此功能不建议使用。

    展开全文
  • Laravel中所有的异常都由Handler类处理,该类包含两个方法:report和render,其中render方法将异常渲染到http响应中。laravel的Handler类文件位置:app/Exceptions/Handler,由于render方法时间异常渲染到http响应...

    在Laravel中所有的异常都由Handler类处理,该类包含两个方法:report和render,其中render方法将异常渲染到http响应中。laravel的Handler类文件位置:app/Exceptions/Handler,由于render方法时间异常渲染到http响应中,所以我们只需要修改下render方法即可

    网上很多的方法是将render方法修改成:

    public function render($request, Exception $exception)

    {

    if ($exception) {

    return response()->view('error.'.$exception->getStatusCode(), [],$exception->getStatusCode());

    }

    return parent::render($request, $exception);

    }

    这时候你的测试可能是没有问题的,但是如果你如果写了登录的方法的话,这时候如果你访问必须要登录的页面的时候,这时候会报错

    0cfe5e69f7c330191bd2f543e7b6d01e.png

    这是由于如果你访问了必须要登录的页面的时候,这时候就会进入app/Exceptions/Handler.php的render方法,这时候$exception->getStatusCode()是不存在的,这时候就会报错了,那么如何解决呢?

    这时候我们找到parent::render的方法所在:

    646c98f2a2d4e9defae6750705ee67de.png

    这时候我们发现原来laravel框架已经将我们的这种情况包含进去了,那么我们就可以即将上面的方法改为:

    public function render($request, Exception $exception)

    {

    if (!($exception instanceof AuthenticationException)) {

    return response()->view('error.'.$exception->getStatusCode(), [],$exception->getStatusCode());

    }

    return parent::render($request, $exception);

    }

    这时候就完美解决了这个问题

    然后在resources/view/error/下面新建错误页面,错误页面的命名为:{errorcode}..balde.php,其中的errorcode为错误码,例如404..balde.php

    配置完成后访问一个不存在的路由时即可跳转到你配置的404页面

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    展开全文
  • public function response() { // 1.... // route(), 通过路由别名跳转 return redirect()->route('session2')->with('message', '我是快闪数据'); // 返回上一个页面 return redirect()->back(); }
  • 前言本文主要给大家介绍的是关于Laravel5.4重新登录跳转到登录前页面的相关内容,分享出来供大家参考学习,下面话不多说,来一起看看详细的介绍:一、应用场景:用户登陆后存在过期时间,超时用户需重新登录。...
  • 今天小编就为大家分享一篇Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 本文实例讲述了laravel框架中间件 except 和 only 的用法。分享给大家供大家参考,具体如下: except except:为黑名单机制,除了show页面不经过中间件Auth过滤,其他都需要过滤,如果没有通过验证,则跳转到指定的...
  • 使用Laravel框架开发PHP项目。 需要的相关技术:web三贱客(h5,css,js),php,laravel函数,composer,本地服务器(WAMP,WNMP) 有需要可以网上寻找开源的前端模板使用。 PHP安装 进入php下载官网选择一个php版本。...
  • 在vendor\encore\laravel-admin\src\Grid.php页面添加一个属性protected $preg_url =['url'=&gt;'','title'=&gt;'','flag'=&gt;false];然后再添加一个控制器可以传参的方法和一个视图层获取内容的方法/*...
  • 分享给大家供大家参考,具体如下:NO.1下载Laravel框架并且安装首先,我们先点击这个链接 https://laravelacademy.org/resources-download 跳转至Laravel学院的资源下载,然后我们点击一键安装包,下载后解压到xampp...
  • A:用户 B:laravel代码库1 C:laravel代码库2 请问当A访问B时,在B的路由层直接进行跳转到C,同时将A请求B所包含的参数及header信息也同时带到C中 这个功能如何实现。。
  • laravel框架之路由

    2019-12-11 23:04:36
    laravel框架——路由 (一)、简介 laravel中的MVC则是通过路由功能映射到对应的程序(控制器方法),通过路由将用户的请求发送到对应的程序进行处理,其作用就是建立url和处理程序之间的映射关系,这样做有一个好处,...
  • 今天上线的网站,访问首页没问题,点击二级页面出现404页面 网上搜索,看了文档,解决办法如下: 在nginx配置文件中增加如下配置: location / { try_files $uri $uri/ /index.php?$query_string; } 保存,...
  • Laravel5自动跳转到登陆前页面

    千次阅读 2016-09-09 11:39:01
    修改以下文件 /vendor/laravel/framework/src/Illuminate/Foundation/Auth/RedirectsUsers.php 修改文件内容为 ;use URL;trait RedirectsUsers { /** * Get the post register
  • laravel5.1框架下的控制器和页面跳转

    万次阅读 2016-06-14 22:22:57
    今天写写代码的时候一直想不通一个问题: return Redirect::to("/dos/...想了很久没想明白,后来同学点拨才发现,其实在laravel框架下,一个页面就是一个view目录下面的.blade.php文件,而不是说我在浏览器地址栏
  • 本文实例讲述了Laravel5.1 框架路由基础。分享给大家供大家参考,具体如下:什么是路由?大K简单的说下,路由是用户访问我们程序的一个入口,比方说 你在浏览器输入:www.myblogs.com/create就会打开一个页面,我们...
  • 我目前正在开发一个基于Laravel 4框架的cms.我正在尝试构建一个类似于Pyro CMS的插件系统,其中模块视图可以使用Blade模板系统包含在页面视图中.我正在构建一个联系表单插件,如果成功提交,则会将用户重定向到给定的...
  • 文章目录一、开发环境配置1.1 PHP运行环境1.2 Composer依赖管理工具1.2 Laravel 运行环境1.4 Debugbar调试工具二、核心要点2.1 Laravel项目创建2.2 Laravel路由2.2.1 路由命名2.2.2 路由分组2.2.3 回退路由2.2.4 ...
  • 本文实例讲述了Laravel框架路由与MVC。分享给大家供大家参考,具体如下:1、路由路由的作用就是将用户的不同url请求转发给相应的程序进行处理,laravel的路由定义在routes文件夹中,默认提供了四个路由文件,其中web...
  • 最新在学习laravel,用到了session,因为laravel没法用$_SESSION 所以只能用框架的session。 贴上代码 <?php namespace App\Http\Controllers; use App\Http\Requests; use Request; use Illuminate\Support\...
  • laravel框架用户登录

    千次阅读 2018-12-25 20:27:22
    ... ...2、指定注册后跳转页面 3、构造函数,绑定中间件 4、数据验证 5、数据创建 进入到刚才的trait里面我们可以看到注册方法 第一步: 验证数据(用刚才上面的验证方法) $this-...
  • laravel框架 响应

    2020-05-23 21:19:12
    注意:laravel框架不支持布尔值的响应 2.ajax请求响应 语法:return reposon()->json(需要json输出的数据) (其中数据是数组格式或是对象格式) 下面来进行一个案例: 以json格式输出我们数据表里面的数据:代码...
  • laravel5.6框架中不登录跳转处理

    千次阅读 2018-09-08 16:48:50
    laravel框架中,可以设置中间件,在访问系统的页面时,将没有登录的访问重定向会登录页面,如果利用系统的auth中间件,因为它默认针对的是前端,因为经过底层的一系列处理,它会到框架的Exceptions目录里的Handler...
  • 2、修改框架函数 //vendor/laravel/framework/src/Illuminate/Foundation/Http/FormRequest.php:136 //将该方法中的$this->getRedirectUrl()去掉 //不建议使用,一般情况下尽量不要修改框架的代码 3、建议使用 定义...
  • Laravel 接口返回302响应,跳转页面

    千次阅读 2020-05-07 11:09:34
    在设计完接口后,使用postman模拟请求,但是一直不返回正确响应。调试的时候,发现是有请求到接口函数。但是返回的结果却不对。这是因为只有在请求的 Heard 里面加入 请求头 X-Requested-Wit: XMLHttpRequest ...
  • (1) Laravel框架 在 提交 表单的时候 也会将 表单中 带有 name 属性的 input标签 生成对应的 请求参数(name为参数名,value为参数值)这些请求参数等于是存放在了Request请求对象中的Attribute键值对集合中。...
  • laravel框架快速入门及增删改查

    千次阅读 2019-07-11 08:52:54
    这里我们可以使用composer命令进行安装laravel框架 composer create-project --prefer-dist laravel/laravel blog 5.5 通过composer安装的项目,已经自动下载了相关依赖并且生成了.env文件和key,无需做其他操作...
  • 一、laravel简介 laravel是一套优雅简介的PHP开发框架,受欢迎程度非常之高,功能...本篇学习笔记以laravel5.2.15版本为框架的版本基础;更多版本请移步https://www.golaravel.com/ 三、laravel下载安装以及开发...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,142
精华内容 456
关键字:

laravel框架跳转页面