zoukankan      html  css  js  c++  java
  • Laravel 基本任务笔记

    数据库:

    建表为tasks的迁移文件:

    php artisan make:migration create_tasks_table --create=tasks

    迁移文件在database/migrations中。

    自带属性:自增id,时间戳。

    使用迁移文件建表:

    php artisan migrate

    Eloquent Models:

    每个表对应一个Models,用于封装所有针对表的操作。

    php artisan make:model Task

    Models的php文件被放置在/app目录下。名字能够自动对应。

    Router:

    用于将url与对应的功能关联。也方便中间件的管理。如Web中间件可以拥有session权限以及CSRF保护。

    语法事例:

    Route::group(['middleware' => 'web'], function () {
    
        /**
         * Show Task Dashboard
         */
        Route::get('/', function () {
            //
        });
    
        /**
         * Add New Task
         */
        Route::post('/task', function (Request $request) {
            //
        });
    
        /**
         * Delete Task
         */
        Route::delete('/task/{task}', function (Task $task) {
            //
        });
    });

    针对post请求,我们可以使用$request代表请求。可以使用自带的验证来判断用户输入是否有效。并且可以将错误信息存入session并重定位回之前页面:

    Route::post('/task', function (Request $request) {
        $validator = Validator::make($request->all(), [
            'name' => 'required|max:255',
        ]);
    
        if ($validator->fails()) {
            return redirect('/')
                ->withInput()
                ->withErrors($validator);
        }
    
       
      $task = new Task;
       $task->name = $request->name;
       $task->save();
    
       return redirect('/');
    });

    通过访问$errors即可访问到返回的错误信息。并且$error是全局的,所有view都可以访问。

    Blade访问例子:

     @foreach ($errors->all() as $error)
       <li>{{ $error }}</li>
     @endforeach

    通过创建Model实例可以调用数据库操作。用save()将实例存入数据库。

    接下来就是数据库的显示。例子如下:

    Route::get('/', function () {
        $tasks = Task::orderBy('created_at', 'asc')->get();
    
        return view('tasks', [
            'tasks' => $tasks
        ]);
    });

    通过Model自带的orderBy方法,能够方便的获得结果。将结果数组进行传参可以使用view方法。view方法的第二个参数代表返回给网页的Get Parameters。

    页面展示结果示例:

      @if (count($tasks) > 0)
            <div class="panel panel-default">
                <div class="panel-heading">
                    Current Tasks
                </div>
    
                <div class="panel-body">
                    <table class="table table-striped task-table">
    
                        <!-- Table Headings -->
                        <thead>
                            <th>Task</th>
                            <th>&nbsp;</th>
                        </thead>
    
                        <!-- Table Body -->
                        <tbody>
                            @foreach ($tasks as $task)
                                <tr>
                                    <!-- Task Name -->
                                    <td class="table-text">
                                        <div>{{ $task->name }}</div>
                                    </td>
    
                                    <td>
                                        <!-- TODO: Delete Button -->
                                    </td>
                                </tr>
                            @endforeach
                        </tbody>
                    </table>
                </div>
            </div>
        @endif

    数据删除示例:

    <tr>
        <!-- Task Name -->
        <td class="table-text">
            <div>{{ $task->name }}</div>
        </td>
    
        <!-- Delete Button -->
        <td>
            <form action="{{ url('task/'.$task->id) }}" method="POST">
                {!! csrf_field() !!}
                {!! method_field('DELETE') !!}
    
                <button type="submit" class="btn btn-danger">
                    <i class="fa fa-trash"></i> Delete
                </button>
            </form>
        </td>
    </tr>

    因为HTML只有POST和GET两种方法,因此DELETE方法需要{!! method_field('DELETE') !!}命令将delete方法赋给Router。

    删除数据Router示例:

    Route::delete('/task/{task}', function (Task $task) {
        $task->delete();
        return redirect('/');
    });

    在这里使用隐式声明,function中会自动将Task中id为{task}的条目取出,并执行删除。

    View:

    所有视图文件被放置在resources/views/中,可以在Router中使用方法view('tasks')来访问 resources/views/tasks.blade.php。

    我们可以将页面之间共享的视图放在一个单独的模板中,将页面不同的部分填充进去即可,这里使用的是blade模板Blade templating engine

  • 相关阅读:
    BZOJ 3670: [Noi2014]动物园 [KMP]
    BZOJ 3569: DZY Loves Chinese II [高斯消元XOR 神题]
    BZOJ 2419: 电阻 [高斯消元 物理]
    BZOJ 2844: albus就是要第一个出场 [高斯消元XOR 线性基]
    BZOJ 4269: 再见Xor [高斯消元 线性基]
    BZOJ 2115: [Wc2011] Xor [高斯消元XOR 线性基 图]
    HDU 3949 XOR [高斯消元XOR 线性基]
    BZOJ 4004: [JLOI2015]装备购买 [高斯消元同余 线性基]
    BZOJ 3105: [cqoi2013]新Nim游戏 [高斯消元XOR 线性基]
    BZOJ 1770: [Usaco2009 Nov]lights 燈 [高斯消元XOR 搜索]
  • 原文地址:https://www.cnblogs.com/xiaoxiaff/p/5270885.html
Copyright © 2011-2022 走看看