目录介绍
app 应用程序核心代码 业务逻辑
-->http
-->controller 控制器目录
bootstrap 框架启动和自动加载配置的文件目录
config 配置文件目录
database 数据库文件目录
public 入口和项目的静态资源文件css、js等
resource 原始资源文件和视图
-->views 视图目录
storage 编译后的模板文件
-->framework
-->views 视图缓存文件目录
tests 单元测试目录
vendor composer加载依赖模块
这里需要注意的是controller
、view
、model
所在的目录
controller
app->http->controllers
view
resource->views
model
app
路由
路由简介
将用户的请求转发给相应的程序进行处理
建立url和程序之间的映射
请求类型get、post、put、patch、delete、
基础路由
get
Route::get('get',function() {
return 'I’m get';
});
post
Route::post('post',function() {
return 'I’m post';
});
多请求路由
match 指定请求方式
Route::match(['get', 'post'],'match', function() {
return 'I’m match';
});
any 所用的请求方式都能接收
Route::any('any', function() {
return 'I’m any';
});
路由参数
获取请求路由的uri区段
举例1:
Route::get('user/{id}', function($id) {
return 'user-' . $id;
});
举例2:路由参数设置默认值
Route::get('user/{name?}', function($name = 'name') {
return 'user-' . $name;
});
举例3:路由参数设置正则
// 参数添加正则在后面接上where
// 第一个参数为路由参数 第二个参数为正则表达式
Route::get('user/{name?}', function($name = 'cuihua') {
return 'user-name-' . $name;
})->where('name', '[A-Za-z]+');
举例4:多参数设置对应正则
// 参数和对应正则以数组形式关联
Route::get('user/{id}/{name?}', function($id, $name = 'cuihua') {
return 'user-id='.$id.'-name=' . $name;
})->where(['id' => '[0-9]+', 'name' => '[A-Za-z]+']);
路由别名
1、以数组形式增加as键值
建立别名
1、项目中用route()
函数根据别名可以取出对应的完整的url地址
2、如果控制器中的方法名改变 那么route()
函数根据别名取出的url地址也会随之改变
// 项目中用route函数根据别名取出真正的、完整的url地址
Route::get('user/as', ['as' => 'ias', function() {
return route('ias');
}]);
路由群组
通过增加路由前缀建立路由群组
// 路由群组
Route::group(['prefix' => 'user'], function () {
// 在路由群组中的url访问需增加群组前缀
// 如:http://localhost/laravel/public/user/user/as
Route::get('user/as', ['as' => 'ias', function() {
return route('ias');
}]);
// http://localhost/laravel/public/user/get
Route::get('get',function() {
return 'member I’m get';
});
});
路由中输出视图
使用view()
函数输出视图
Route::get('view', function() {
return view('welcome');
});
控制器
控制器规则
控制器文件命名以驼峰法,如
TestController.php
类名与文件名一致,且一样采用驼峰法
添加命名空间
namespace App\Http\Controllers
;
新建控制器
上面有写到controller
目录是在app->http->controllers
下,新建TestController.php
namespace App\Http\Controllers;
class TestController extends Controller
{
public function index($id) {
return 'controller-test-index-id-'.$id;
}
}
控制器路由
控制器路由与上面【路由】大章节里的路由写法基本一致,不同的是,第二个参数为定义指向该控制器的方法,可为数组形式
基本路由
// 字符串形式
Route::get('test/index', 'TestController@index');
// 数组形式
Route::get('test/index', ['uses' => 'TestController@index']);
路由别名
以数组形式增加as
键值
Route::get('test/{id}', [
'uses' => 'TestController@index',
'as' => 'testin'
])
添加参数正则
与上面【路由】大章节的路由正则一致,在最后增加where
条件
Route::get('test/{id}', [
'uses' => 'TestController@index',
'as' => 'testin'
])->where(['id' => '[0-9]+']);
模型
模型规则
模型命名首字母大写,采用驼峰法
命名空间
namespace App
;引用
use Illuminate\Database\Eloquent\Model;
模型类命名首字母大写与文件名一致
新建模型
模型目录在app
下,新建一个Test.php
的模型
namespace App;
use Illuminate\Database\Eloquent\Model;
class Test extends Model{}
视图
在resource->views
目录下新建viewtest.php
为模板文件;
控制器输出视图
view()
函数输出视图模板
public function index($id) {
return view('viewtest', ['id' => $id]);
// 如果在`views`目录下还有文件路径,输出视图时添加路径即可,如`view('test/test')`
}
输出视图变量
在view()
方法第二个参数增加数组变量即可
public function index($id) {
return view('viewtest', ['id' => $id]);
}
默认模板
建立默认模板文件为test.blade.php
,test
为模板名称,输出视图则为view('test')
view() 方法引入的页面路径呢
在根目录下的resource->views里面,如果写在views的根目录下了,view('welcome')的时候,不用加路径