zoukankan      html  css  js  c++  java
  • Laravel 框架 基础(一)

    Laravel 框架

    laravel 5.2 在 5.1 基础上继续改进和优化,添加了许多新的功能特性:多认证驱动支持、隐式模型绑定、简化 Eloquent 全局作用域、可选择的认证脚手架、中间件组、访问频率限制、数组输入验证优化等等。

    一、 Compose安装laravel

    compose下载http://www.phpcomposer.com/

    环境要求:安装之前先确定您的环境是否是php5.4以上,最好是php7,推荐使用xampp。并且php要打开openssl

    安装laravel

    改镜象,避免翻墙:
    composer config -g repo.packagist composer https://packagist.phpcomposer.com
    
    新建项目
    composer create-project laravel/laravel gwd --prefer-dist
    

    二、目录介绍

    这里不再详述了,请见官方文档。

    三、路由起步(参数,连接符,默认值)

    所有应用路由都定义在 AppProvidersRouteServiceProvider 类载入的 app/Http/routes.php 文件中。
    最基本的 Laravel 路由接收一个 URI 和一个闭包:

    Route::get('/', function () {
    return 'Hello World';
    });
    

    代表 http://localhost/ 返回 Hello World,下面这个是post方法。

    Route::post('add', function () {
    //
    });
    

    也可以用以下方法:

    Route::match(['get', 'post'], '/', function () {
    //
    });
    
    Route::any('foo', function () {
    //
    });
    

    结合控制器:

    Route::get('/', "IndexController@lst");
    

    分组:

    Route::group(['prefix' => 'admin','namespace'=>'Admin','middleware'=>['web','admin.login']], function () {
    //Route::get('login','IndexController@login');
    Route::get('index','IndexController@index');
    Route::resource('article', 'ArticleController');
    });
    

    参数:

    Route::get('posts/{post}/comments/{comment}', function ($postId, $commentId) {
    return $commentId;
    });
    

    默认值:

    Route::get('posts/{post}/comments/{comment?}', function ($postId=0, $commentId=null) {
    return $postId .'----'.$commentId;
    });
    

    资源路由:

    Route::resource('article', 'ArticleController'); //生成n个方法
    

    四、控制器

    位于AppHttpControllers

    手动创建

    <?php 
    namespace AppHttpControllers;
    class IndexController extends Controller{
    
    public function index(){
    	return "welcome";
    
    }
    
    }
    

    artisan 创建控制器:

    php artisan make:controller UserController
    

    控制器分组:有时候要把控制器进行分组,只需要在AppHttpControllers下新文件夹,然后把控制器放进去。(需要改命名空间和use路径)

    use AppHttpControllersController;
    use IlluminateHttpRequest;
    
    use AppHttpRequests;
    
    class UserController extends Controller
    {
    public function index(){
    return "你好";
    }
    //
    }
    

    五、视图

    视图用的都是blade模板,位于view下面,有个示例文件welcome.blade.php。生产环境中只需要把模板拷到此处,重命名成blade.php。

    控制器渲染模板

     public function index()
    {
    return view('index');
    }
    

    如果模板上层还有文件夹,比如模板位于view/web/a.index.blade.php,view('web.index');
    用“.”来连接。

     public function index()
    {
        return view('web.index');
    }
    模板中只需要输出变量:<?php echo $data;?>
    

    传参(单个):

     public function index()
    {
        $data="你好";
        return view('web.index')->with('data',$data);
    }
    

    传参(多个):只需要放数组是,然后作为第二个参数传给视图

     public function index()
    {
      $data1="你好1";
      $data2="你好2";
      $data3="你好3";
      $data=[
      'data1'=>$data1,
      'data2'=>$data2,
      'data3'=>$data3
    ];
      return view('web.index', $data);
    }
    

    compact传值:

     public function index()
    {
    $data1="你好1";
    $data2="你好2";
    $data3="你好3";
    $data=[
    'data1'=>$data1,
    'data2'=>$data2,
    'data3'=>$data3
    ];
    return view('web.index', compact('data','data1'));
    }
    
    模板中调用:<?php echo $data['data1'];?>
    

    模板简单语法:

    1、 单个变量{{$name}}

    2、原样输出:

    @{{$name}}

    3、判断变量是否为空并作处理

    {{$name or '姓名为空'}}

    4、判断变量是否存在并作逻辑处理

    {{isset($data1)?$data1:"不存在"}}

    5、 转义 显示未转义的数据。在默认情况下,Blade 模板中的 {{ }} 表达式将会自动调用 PHP 的 htmlentities 函数,以避免 XSS 攻击。如果你不希望你的数据被转义,可以使用下列的语法:

    {!!$str!!}

    流程控制

    @if($name>10)
    
    大人
    @else
    小孩
    @endif
    

    除非--否则

    @unless($name>10)
    小孩
    @endunless
    

    for循环

    @for($i=0;$i<10;$i++)
    {{$i}}
    @endfor
    

    foreach

    @foreach($data as $v)
    {{$v}}
    @empty
    为空
    @endforeach
    

    while

    @whiile(true)
    你是真的
    @endwhile
    

    子模板

    包含

    @include(index)
    @include('common.header',['page'=>'首页'])
    被包含的
    <div class="header">我是公共头部 - 您当前访问的页面是:{{$page}}</div>
    

    嵌套

    母版

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
    .header{height:100px;background: darkred}
    .middle{height: 300px; background: lightblue}
    .footer{height:100px;background: yellowgreen}
    </style>
    </head>
    <body>
    <div class="header">我是公共头部</div>
    {{--@yield('content')--}}
    
    @section('content')
    <P>我是主模板里的内容</P>
    @show
    
    <div class="footer">我是公共底部</div></body>
    </html>
    
    子版
    
    @extends('layouts.home')
    
    @section('content')
    @parent
    <div class="middle">我是layouts区域的替换内容 XXXXXXXX</div>
    @endsection
  • 相关阅读:
    Windows 下 GoLang 获取当前线程ID
    使用mbedtls加解密(RSA AES)
    mysql c++ jdbc 示例
    No migrations to apply. django同步数据库失败
    python3 rsa 加解密 支持长字符串
    python3 计算rsa私钥 已知n e计算d
    linux打印控制方式
    获取进程加载的dll
    go get报错package golang.org/x/net/proxy: unrecognized
    vector中数据释放崩溃问题
  • 原文地址:https://www.cnblogs.com/sunface/p/5622196.html
Copyright © 2011-2022 走看看