laravel 学习之第二章
发布日期:2025-04-04 03:42:18 浏览次数:10 分类:精选文章

本文共 4062 字,大约阅读时间需要 13 分钟。

Laravel 应用开发实践指南

Controller 开发

请求处理

在 Laravel 的控制器中,通过 Request Facade 获取并处理请求数据。你可以用以下方式获取请求值:

ρεquest->input('name'); // 获取 name 参数ρρ->input('name', 'default'); // 获取 name 参数,如果不存在则返回 'default' 默认值

如果你需要确认请求中包含特定字段,可以使用 has() 方法:

if(ρψη->has('nikename')) {    // 处理 'nikename' 参数}

获取所有请求参数的方法有很多种,例如通过 ρ serviços->all() 获取所有输入的数据。

请求类型判断

通过 Request Facade 的方法来判断请求类型:

echo ρρεquest->method(); // 判断请求方法,例如 'GET', 'POST', 'PUT' 等if(ρocre->isMethod('GET')) {    // 处理 GET 请求}

如果要判断是否是 AJAX 请求,可以使用 isAjax() 方法:

$flag = ρusk->is('student/*');// 判断路径是否为 'student/' 下的路由

通过 url() 方法获取当前请求的 URL 地址:

$currUrl = ρρεquest->url();

Session 管理

在 Laravel 中,Session 可以在路由组中启用,并与控制器方法结合使用:

Route::group(['middleware' => 'web'], function() {    // 启用 session 中间件    Route::any('session1', ['uses' => 'StudentController@session1']);    Route::any('session2', ['uses' => 'StudentController@session2']);});

通过控制器方法实现 Session 操作:

public function session1( Request $request ) {    $request->session()->put('key1', 'value1');}public function session2( Request $request ) {    $value = $request->session()->get('key1');}

或者使用 Session Facade:

public function session1() {    Session::put('key1', 'value1');}public function session2() {    Session::get('key1', 'default_value');}

还可以将数据推送到 Session:

public function session1() {    Session::push('student', 'sean');    Session::push('student', 'imooc');}

如果需要删除数据,可以使用 pull() 方法:

public function session2() {    $result = Session::pull('student', 'default');    var_dump($result);}

为了获取所有 Session 数据,可以使用 all() 方法:

public function session2() {    $result = Session::all();    var_dump($result);}

还可以检查是否存在某个键值:

public function session2() {    if(Session::has('key1')) {        $data = Session::all();        var_dump($data);    }}

管理 Session 的方式还有很多,如删除所有会话数据 flush(),或擦除特定数据 forget()

Controller 之 Response

在控制器中,通过 Response Facade 回馈数据。在控制器中,你可以直接返回 JSON 格式的数据:

echo response()->json($data);

返回 JSON 数据的同时,可以传递额外信息:

return response()->json([    'status' => 'success',    'message' => '操作成功']);

为了实现页面跳转,可以使用 Redirect Facade:

return redirect('student/list');

通过 with() 方法可以传递额外参数:

return redirect('c1')->with('msg', '快闪数据');

或者跳转到路由:

return redirect()->action('StuController@action')->with('msg', '快闪数据');return redirect()->route('aliasname')->with('msg', '快闪数据');

回到上一个页面的方法是 back()

return redirect()->back();

注意:使用这些方法时,要确保你的路由和视图已经正确设置,例如使用 name 属性来定义路由 aliases,否则可能无法正确导航。

中间件开发

在 Laravel 中,中间件可以用于跨过要求,可以定义在 Global Scopes。建议在 Http/Kernel.php 中注册中间件:

$kernel->(routeMiddleware('activity', 'App\Http\Middleware\Activity'));

然后在路由组中使用中间件:

Route::group(['middleware' => 'activity'], function() {    Route::any('active1', ['uses' => 'StudentController@active1']);    Route::any('active2', ['uses' => 'StudentController@active2']);});

中间件可以执行前置和后置操作:

public function handle($request, Closure $next) {    if(time() < strtotime('20170406')) {        return redirect('active0');    }    return $next($request);}

或者在后置操作中,修改响应内容:

public function handle($request, Closure $next) {    $response = $next($request);    echo '这是一个后置操作';    return $response;}

表单管理

静态资源管理

在 Blade 传统中,你可以使用 asset() 隐式包含路径:

{{ asset('static/js/jquery.min.js') }}

分页实现通常是在控制器中使用 paginate() 方法:

$student = Student::paginate(2);

然后在视图中渲染:

{
{ $student->render() }}

表单验证

在控制器中使用 Validator:

$validationRules = [    'name' => ['required|min:2|max:20'],    'age' => ['required|integer'],];$validator = Validator::make(    $request->input(),    $validationRules,    [        'required' => ':attribute 为必填项',        'min' => ':attribute 长度不符合要求',        'integer' => ':attribute 必须是整数',    ],    [        'name' => '姓名',        'age' => '年龄',    ]);

如果验证失败,返回错误页面:

if($validator->fails()) {    return redirect()->back()->withErrors($validator);}

数据保持

在表单中,可以通过 old() 方法获取之前提交的值:

{{ old('message') }}{{ old('Student.name') }}

数据保存需要确保你的模型有正确的可赋值属性。如果你的模型中有性别字段,可以使用 sex() 方法来处理:

public function sex($index = null) {    $sexOptions = [        self::SEX_GIRL => '女',        self::SEX_BOY => '男',    ];    return $index != null ? $sexOptions[$index] : '未知';}

这就是完整的性别处理逻辑。

上一篇:Laravel 安装上传代码不完整的解决方法
下一篇:laravel 学习之第一章

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2025年05月06日 23时02分15秒