批改状态:合格
老师批语:写的很认真仔细,继续加油!
laravel中的所有请求都要通过路由解析, 才能找到对应的控制器和方法处理.
一般使用 /routes/web.php 文件来编写所有路由即可.
路由编写基本格式: Route::请求方式(路由地址, 控制器@方法) . 如: Route::get('/admins/admin/index', 'admins\Admin@index'); , Route::post('/admins/admin/save', 'admins\Admin@save'); .
若请求URL中的路径, 在 /public 目录中, 有匹配请求路径的文件, 同时又有匹配到的路由, 则laravel会优先加载 /public 目录中的对应文件.
/public 目录中, 实现站点静态化.laravel没有通用路由一说, 每个请求都需要有对应的路由.
laravel的控制器文件要放在 /app/Http/Controllers 路径中, 支持子路径.
控制器的命名空间要跟其相对于laravel根目录的物理路径一致, 否则laravel无法自动加载.
控制器名称要跟控制器文件名称一致.
需要继承 \App\Http\Controllers\Controller 基类.
除开手动创建控制器类外, 也可以使用 artisan 命令创建控制器. 在laravel项目的根目录中, 打开命令行终端, 执行命令: php artisan make:controller 命名空间\控制器名 , 也可以创建控制器文件.
\App\Http\Controllers 的非完全限定命名空间.控制器示例:
1-控制器( Test.php ):
<?phpnamespace App\Http\Controllers;use Illuminate\Routing\Controller;class Test extends Controller{public function index(){// 直接在前端输出"hello, laravel!";echo 'hello, laravel!';}}
2-路由(web.php片段):
Route::get('/test/index', 'Test@index');
在控制器中, 使用助手函数 view(视图路径, 需渲染的数据) 来加载和渲染视图.
view(视图路径)->with('参数名1', 参数值1)->with('参数名2', 参数值2)->...; 来渲染数据, 想用那种方式, 看自己喜好./resources/views 的路径. .blade , 则会被laravel视为 blade 模板引擎的模板, 经编译后生成纯PHP视图文件, 存放在 /storage/framework/views 路径中..blade 的纯PHP视图文件, 或者是 .html 文件, 则直接渲染该视图文件.控制器获取视图并渲染数据示例:
1-返回视图的控制器( Test.php ):
<?phpnamespace App\Http\Controllers;use Illuminate\Routing\Controller;class Test extends Controller{public function index(){// 使用参数往前端页面输出"hello, laravel!"$hello = 'hello, laravel!';return view('/index', ['hello' => $hello]);}}
2-视图文件( index.php )::
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>index.php</title></head><body><h3><?php echo $hello ?></h3></body></html>
3-路由(web.php片段):
Route::get('/test/index', 'Test@index');
\App\Http\Controllers\User 类就是一个模型类. 跟数据库中的一个表关联..env 配置文件中, 有配置连接数据库参数的代码片段:
// 数据库类型DB_CONNECTION=mysql// 数据库地址DB_HOST=127.0.0.1// 数据库监听端口DB_PORT=3306// 数据库名称DB_DATABASE=phpedu// 数据库用户名DB_USERNAME=root// 数据库密码DB_PASSWORD=root
DB::select(SQL查询语句, 绑定的参数数组) 完成查询.
/* 数据库查询[原生查询] */public function get(){// DB类是laravel封装pdo的操作数据库的类, 一般用它的门面类做静态调用$query = DB::select('select * from `player` ');$data = [];foreach ($query as $item) {// 把对象转为数组$data[] = (array) $item;}$res = [];$res['data'] = $data;return view('player', $res);}
使用 DB::update(SQL更新语句, 绑定的参数数组) 完成修改.
如果更新的值跟原值相同, 则不计为影响的行数.
DB::select() 也能执行修改, 删除和插入的sql, 但返回值是空数组.
/* 数据库更新[原生更新] */public function update(){// 注意, 如果更新的值跟原值相同, 则不计为影响的行数$res = DB::update('update `player` set `name` = "勒布朗-詹姆斯" where `id` = 1');var_dump($res);}
DB::insert(SQL插入语句, 绑定的参数数组) 完成插入.DB::delete(SQL删除语句, 绑定的参数数组) 完成删除.laravel中, 所有请求必须先经过路由解析, 带能找到相应的处理控制器和方法. 但若 /public 目录中有跟请求地址相匹配的文件, 则优先加载这个匹配的文件.
laravel是一个基于MVC的web开发框架, 但是它弱化了模型(model)的作用.
使用门面类 DB , 能实现原生的数据库增删改查操作.
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号