laravel控制器
控制器的使用:(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
创建后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
在刚在创建的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
6.接收用户输入,
input门面在php版本为5. 几版本才可以运行;
- 查看php版本,在创建的laravel项目的目录下,,,按住shift+鼠标右击,选择在此处打开命令行窗口,输入php artisan --version查看版本号,例如我的 7.1.3版本是不可使用input门面的
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门面就可以运行了。
接收用户输入内容的类;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,
定义好后数组key就是类的别名,在控制器中可以直接use别名
上一篇: 支付宝支付,支付宝手机网页支付
下一篇: cakephp工作笔记42-3态旋钮效果