欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

laravel控制器

程序员文章站 2022-04-11 13:47:33
...

控制器的使用:(C)


MVC三层架构:

  • M:model模型
  • V:view视图
  • C:controller控制器

1.控制器:


将用户的输入输出操作进行分开。用来接收用户的请求,来调度模型做数据表的交互操作。
返回的数据交给view视图进行展示。控制器将数据传给view视图,view视图用来展示数据。
其中auth存放的时框架自带的auth认证相关的示例控制器文件,Controller.php文件是框架的基类控制器。


2.controller控制器可以分目录管理;


前端后台区分的时候需要分目录进行管理;分目录管理意思就是分模块管理。


3.控制器的命名:


大驼峰命名加上Controller.php


4.结构代码如何生成:


在自己创建的文件除打开命令行。
直接在controller文件夹下创建,输入php artisan make:controller TestController,,,这个方法创建的控制器会有相应代码。
创建后controller下会有一个TestController.php,打开为,

<?php
//声明当前类的命名空间
namespace App\Http\Controllers;
//引入request空间元素
use Illuminate\Http\Request;
//声明TestController并集成Controller
class TestController extends Controller
{
    //
}

在controller下创建的文件夹下创建,输入:php artisan make:controller Admin/TestController
其中Admin是创建的文件名,意思是文件路径为:controller/Admin/TestController
laravel控制器
创建后controller/Admin下会有一个TestController.php,打开为,

<?php

namespace App\Http\Controllers\Admin;
//比直接在controller文件夹下创建的多了下面这行代码,
//因为这两个不在一个文件目录下
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class TestController extends Controller
{
    //
}

分目录管理时,创建可以用/创建,也可以用\创建,建议使用/来创建,windowas系统下都可以使用,Linux系统下只能使用/


5.控制器路由:


用路由规则调用控制器方法,而不用回调函数了。
Route::请求方法(‘路由表达方式’,‘控制器@方法’);
写在route下的web.php文件下:

首先在controller下的TestController创建控制器路由;

//写控制器路由,控制器@控制器方法  app/http/Controller下的TestController
Route::get('test1','aaa@qq.com');

然后在contoller/TestController.php文件夹下填写test1方法

//声明当前类的命名空间
namespace App\Http\Controllers;
//引入request空间元素
use Illuminate\Http\Request;
//声明TestController并集成Controller
class TestController extends Controller
{
   //test1方法:
   public function test1(){
        phpinfo();
   }
}

然后在网页输入自己的域名加test1,,,,,我的就是syx.cn/test1
laravel控制器
在刚在创建的controller/Admin/TestController创建控制器路由:
在web.php创建控制器路由

//写控制器路由,控制器@控制器方法  app/http/Controller/Admin下的TestController
//要用\\\否则报错
Route::get('test0','Admin\aaa@qq.com');

然后在controller/Admin/TestController.php文件夹下填写test0方法

<?php

namespace App\Http\Controllers\Admin;
//比直接在controller文件夹下创建的多了下面这行代码,
//因为这两个不在一个文件目录下
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class TestController extends Controller
{
    //test0方法:
    public function test0(){
         phpinfo();
    }
}

在网页中输入 syx.cn/test0
laravel控制器


6.接收用户输入,


input门面在php版本为5. 几版本才可以运行

  1. 查看php版本,在创建的laravel项目的目录下,,,按住shift+鼠标右击,选择在此处打开命令行窗口,输入php artisan --version查看版本号,例如我的 7.1.3版本是不可使用input门面的
    laravel控制器
    2.可以重新建立一个laravel文件,并指定其php版本;
    在cmd命令行输入以下内容,指定了路径为D:/laraveldemo/two,,保证two文件夹里没有文件才可以;
    composer create-project laravel/laravel=5.5.28 --prefer-dist D:/laraveldemo/two
    创建成功后D:/laraveldemo/two文件会有24个文件,但是我的只有22个

在新创建的laravel项目里右击+shift----在此处打开命令行-----输入php artisan --version查看php版本
现在就是5.5.48版本了 ,input门面就可以运行了。
laravel控制器

接收用户输入内容的类;Illuminate\Http\Request
Facades:门面的思想,门面是介于一个类的实例化,与没有实例化中间的状态。其实是一个类的接口实现,在这个状态下可以不实例化类但是调用类的方法。就是静态调用
Inpute::get(‘参数的名字’,‘如果参数没有被传递,使用默认值’)
Inpute::all();获取所有的用户输入,返回数组
Inpute::get(‘参数的名字’);获取单个的用户输入,获取不到返回null
Inpute::only([‘id’,‘age’]);获取指定几个用户输入,返回数组
Inpute::except([‘id’,‘age’]);获取指定用户以外的所有的参数,返回数组。
Input::has(‘name’);用来判断某个输入的参数是否存在,返回bool

既可以使用get也可以使用post

在laravel中使用facades,可以在config/app.php下定义长串的别名,(在aliases数组中定义别名)
输入这个命令:
‘Input’=> Illuminate\Support\Facades\Input::class,
laravel控制器
定义好后数组key就是类的别名,在控制器中可以直接use别名
laravel控制器