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');
    }

  • 相关阅读:
    【redis】redis的 key的命名规则
    【redis】存入redis的值,如果为null是否默认不被存入
    【java】StringBuilder的三种清除方法对比
    【java】hash一致性算法的实现区别【标题暂定】
    【java】Java中十六进制转换 Integer.toHexString()到底做了什么?什么时候会用到它?为什么要用它?byte为什么要&0xff?为什么要和0xff做与运算?
    【java】TreeMap/HashMap的循环迭代中 keySet和entrySet和forEach方式 + map的几种迭代方式
    【java】Map、Set、List不同数据结构的各种不同循环迭代的效率对比,使用场景
    【java】安全加密MessageDigest的功能及用法【hash一致性算法】
    hbase分布式集群搭建
    hadoop分布式集群搭建
  • 原文地址:https://www.cnblogs.com/jiaoda/p/7299213.html
Copyright © 2011-2022 走看看