zoukankan      html  css  js  c++  java
  • laravel简书(1)

    Laravel的社区生态

    中文社区(http://laravel-china.org

    5.4中文文档(http://d.laravel-china.org/docs/5.4)

    Laravel源码地址(http://github.com/laravel/laravel)

    数据填充包(http://github.com/fzaninotto/Faker

    与其他框架的优势

    1、laravel包含的功能更为丰富:队列,搜索,数据库迁移,定时脚本

    2、laravel使用了丰富的第三方包

    Laravel的安装

    1、  安装环境的要求:PHP>=5.6.4  开启:openssl,PDO,mbstring,tokenizer,xml

    2、  安装composer:https://pkg.phpcomposer.com/#how-to-install-composer配置中国镜像

    3、  用composer安装laravel:composer create-project laravel/laravel laravel54 “5.4.*”

    4、  使用laravel框架之前先给php和apache做相关配置,避免后续麻烦:

    5、 php.ini

    6、  extension=php_openssl.dll

    7、  extension=php_pdo_mysql.dll

    8、  extension=php_mbstring.dll

    9、  extension=php_fileinfo.dll

    10、              extension=php_curl.dll

    11、              httpd.conf

    12、              LoadModule deflate_module modules/mod_deflate.so

    13、              LoadModule rewrite_module modules/mod_rewrite.so

    14、              配置完毕以上,重启apache服务。

    Laravel的路由

    1、  Route::get();//获取资源

    2、  Route::post();//创建资源

    3、  Route::put();//更新资源

    4、  Route::patch();//增亮更新资源

    5、  Route::delete();//删除资源

    6、  Route::options();//查询资源支持哪些方法

    7、  Route::group();//路由分组

    Route::group(['prefix'=>'posts'],function (){
       Route::get('/','AppHttpControllersPostController@index');
    });

    8、  Route::any();//支持所有的路由

    9、  Route::match();//可以指定支持的路由

    如果支持的是put,那么表单的格式如下

    <form action=”/posts” method=”POST”>

               {{  method_field(“PUT”)  }}

    </form>

    数据表的生成

    Php artisan make:migration create_posts_table//创建表

    Php artisan migrate//执行数据

    Php artisan migrate:rollback//数据回滚操作

    //执行数据时出错需在appprovidersappserviceprovider.php的boot方法中输入:

    Schema::defaultStringlength(191);

    Tinker的使用

    1、创建文章:

    > $post = new AppPost();

     AppPost {#653}

    > $post->title="this is post1";

     "this is post1"

    > $post->content="this is content";

     "this is content"

    > $post->save();

     true

    2、设置时区:config/app.php

    'timezone' => 'Asia/Shanghai',

    重启tinker

    3、时间格式的转变:

    应在渲染时间中加入:{{$post->created_at->toFormattedDateString()}}

    填充内容

    Databasefactoriesmodelfactory.php中输入

    $factory->define(AppPost::class,function (FakerGenerator $faker) {
        return [
            'title'=>$faker->sentence(6),//6个字符
           
    'content'=>$faker->paragraph(10),//10个句子
       
    ];
    });

    php artisan tinker

    >>> factory(AppPost::class,20)->create();//创建20条记录,并放入数据库

    分页

    $posts =Post::orderBy('created_at','desc')->paginate(6);

    在index.blade.php的列表页中找到分页,直接替换成  {{$posts->links()}}  即可实现分页功能。

    {{ str_limit($post->content,100,'...') }}//内容展示100个字符,超出的显示…

    当创建文章点击提交后会报错,需在form表单中输入:{{ csrf_field() }} CSRF是跨站请求伪造

    插入富文本编辑器

    新建ylaravel.js,输入

    var editor = new wangEditor('content');
    editor.create();

    在main.blade.php引入

    <script src="/js/ylaravel.js"></script>

    插入富文本编辑器后创建的文章会出现<p></p>标签,此时:

    需将index.blade.php中的

    {{str_limit($post->content,100,'...')}}

    修改成:

    {!! str_limit($post->content,100,'...') !!}

    实现中文报错

    Create.blade.php 中的提交按钮前插入

    @if(count($errors)>0)
    <div class="alert alert-danger" role="alert">
        @foreach($errors->all() as $error)
       
    <li> {{$error}}</li>
        @endforeach
    </div>
    @endif

    public function store() {
        //验证
       
    $this->validate(request(),[
            'title'=>'required|string|max:100|min:5',
            'content'=>'required|string|min:10',
        ]);
        //逻辑
       
    $post = Post::create(request(['title','content']));
        //渲染
       
    return redirect("/posts");
    }

    图片上传

    public function imageUpload(Request $request) {
        $path = $request->file('wangEditorH5File')->storePublicly(md5(time()));
        return asset('storage/'.$path);
        //dd(request()->all());
    }

    打开php.ini中的php_fileinfo

    Main.blade.php

    Ylaravel.js

    <meta name="csrf-token" content="{{ csrf_token() }

    var editor = new wangEditor('content');
    editor.config.uploadImgUrl = "/posts/image/upload";
    editor.config.uploadHeaders = {
        'X-CSRF-TOKEN' : $('meta[name="csrf-token"]').attr('content')
    };
    editor.create();

    实现编辑功能

    <form action="/posts/{{$post->id}}" method="POST">
        {{method_field("PUT")}}
        {{csrf_field()}}

    public function edit(Post $post) {
        return view('post/edit',compact('post'));
    }

    实现修改功能

    public function update(Post $post) {
        //验证
       
    $this->validate(request(),[
            'title'=>'required|string|max:100|min:5',
            'content'=>'required|string|min:10',
        ]);
        //逻辑
       
    $post->title = request('title');
        $post->content = request('content');
        $post->save();
        //渲染
       
    return redirect("/posts/{$post->id}");
    }

    在编辑页面edit.blade.php的提交按钮前添加

    @if(count($errors)>0)
       
    <div class="alert alert-danger" role="alert">
            @foreach($errors->all() as $error)
               
    <li> {{$error}}</li>
            @endforeach
       
    </div>
    @endif

    为了方便,可以将错误提示单独放入layout文件夹中error.blade.php,在edit.blade.php中只需要引入即可:@include(‘layout.error’)

    实现删除操作

    Route::get('/{post}/delete','AppHttpControllersPostController@delete');

    public function delete(Post $post) {
        //TODO:用户的权限验证
       
    $post->delete();
        return redirect('/posts');
    }

  • 相关阅读:
    快速幂模板
    部分有关素数的题
    POJ 3624 Charm Bracelet (01背包)
    51Nod 1085 背包问题 (01背包)
    POJ 1789 Truck History (Kruskal 最小生成树)
    HDU 1996 汉诺塔VI
    HDU 2511 汉诺塔X
    HDU 2175 汉诺塔IX (递推)
    HDU 2077 汉诺塔IV (递推)
    HDU 2064 汉诺塔III (递推)
  • 原文地址:https://www.cnblogs.com/jiaoda/p/7299213.html
Copyright © 2011-2022 走看看