Laravel基础内容

laravel常用命令

composer create-project --prefer-dist laravel/laravel blog    // 创建项目
php artisan make:controller HomeController    创建控制器
php artisan make:controller Admin/IndexController    在文件夹下创建Controller
php artisan make:model Blog
php artisan route:list    列出所有route
php artisan migrate    // 创建表
php artisan migrate:rollback    // 回滚到上一次之前

常用php函数

路由

route('路由的名字')    // 输出路由地址

路由前缀

Route::get('admin/index', 'Admin\IndexController@index');
Route::get('admin/login', 'Admin\IndexController@login');

有公共部分admin,可以修改为下面

Route::prefix('admin')->group(function () {
  Route::get('index', 'Admin\IndexController@index');
  Route::get('login', 'Admin\IndexController@login');
});

有公共部分前缀和命名空间,可以继续修改为如下:

Route::group(['prefix'=>'admin','namespace'=>'Admin'],function(){
    Route::get('index', 'IndexController@index');
    Route::get('login', 'IndexController@login');
});

跳转

back()表示返回,with带参数返回

return back()->with('msg','用户名或密码错误!');

redirect()跳转命令

return redirect('admin/index');   // 跳转到后台主页

资源控制器

创建资源控制器

php artisan make:controller PhotoController --resource

创建资源路由

Route::resource('photos', 'PhotoController');

中间键

1.创建中间件

php artisan make:middleware AdminLogin

2.在Kernel.php中添加

  protected $routeMiddleware = [
        'admin.login' => \App\Http\Middleware\AdminLogin::class,  // 创建admin.login 中间件
    ];

3.在路由中添加middleware

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

视图

在控制器里返回视图模板

public function index(){
    $name='jake';
    $age='12';
    return view('index')->with('name',$name)->with('age',$age);
}

第二种方法传值:

public function index(){
    $data = [
    'name'=>'jake',
    'age'=>'12',
    ];
    return view('index',$data);
}

第三种方法:

public function index(){
    $data = [
    'name'=>'jake',
    'age'=>'12',
    ];
    $title="This is a title";
    return view('index',compact('data','title'));
}

模板引擎

{{ $name }}    // 输出$name
{{ $name or 'undefined' }}    // 如果$name为空字符,输出undefined
@{{ $name }}    // @屏蔽不输出
{{ isset($name)?$name:'undefined' }}    // 判断name是否传值
{!! <p>This is content</p> !!}    // 格式化输出内容

条件判断

<p>{{ $data['score'] }}</p>
        @if ($data['score']>60)
           <p>及格</p>
        @else
          <p>不及格</p>
        @endif

除非结构

// 输出不及格的
@unless ($data['score']>60)
          不及格
 @endunless

for循环

@for ($i=0; $i <= $data['num']; $i++)
          <p>{{ $i }}</p>
 @endfor

foreach遍历

@foreach ($data as $key => $value)
          <p>{{ $key }} - {{ $value }}</p><br>
 @endforeach

forelse 遍历

@forelse ($data['test'] as $key => $value)
          <p>{{ $key }} - {{ $value }}</p><br>
 @empty
          没有数据
 @endforelse

模板引擎子视图

@include('common.header')    公共模板引入
@include('common.header',['title'=>'文章'])

模板继承
layouts下的home.blade.php

<!doctype html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
    </head>
    <body>
      <div class="header">
        header
      </div>
        @yield('content')
        <div class="footer">
          footer
        </div>
    </body>
</html>

引入模板

@extends('layouts.home')
@section('content')
  <div class="content">
    this is a content
  </div>
@endsection
@extends('layouts.home')
@section('content')
    @parent    //    继承父模板 
 <div class="content">
    this is a content
  </div>
@endsection

模板继承

自动在每个方法view中添加'cate'

public function __construct(){
        View::share('cate','user');
 }

数据库

给数据库添加前缀

'mysql' => [
            'prefix' => env('DB_PREFIX',''),
            'prefix_indexes' => true,
            
            ]) : [],
        ],

在.env文件中添加

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
DB_PREFIX=blog_    // 添加前缀

配置项输出

echo config('app.debug');    // 输出是否是调试阶段
echo config('app.timezone');    // 输出时区
echo config('database.default');    // 默认数据库
    

数据库的创建migrate

Laravel使用imgrate创建数据表与Seed创建文件,点击https://www.cnblogs.com/carious/p/11346158.html

数据库查询

$users = DB::table('users')->where('user_id','>',1)->get();    // 查询users表

如果判断数据是否存在

return DB::table('orders')->where('finalized', 1)->exists();

return DB::table('orders')->where('finalized', 1)->doesntExist();

Model的一般使用

php artisan make:model Http/Model/User    // 创建User模型

自定义表名

protected  $table = 'user';    // 设置表名

模型取数据

$user = User::where('user_id',1)->get();
dd($user);

另外一种方法

$user = User::find(1);
dd($user);

需要注意,修改默认id

protected $primaryKey = 'user_id';    // 默认主键为id,重新设置主键

更新时不需要设置修改时间

$user->user_name='kare';
$user->update();
public $timestamps = false;    // 默认时间戳修改禁用

session

session清空

session(['user'=>null])    //   session()中存储的是数组

文件接收

$file = Input::file('file');

文件目录设置

app_path()

app_path函数返回app目录的绝对路径:
$path = app_path();
你还可以使用app_path函数为相对于app目录的给定文件生成绝对路径:
$path = app_path('Http/Controllers/Controller.php');

base_path()

base_path函数返回项目根目录的绝对路径:
$path = base_path();
你还可以使用base_path函数为相对于应用目录的给定文件生成绝对路径:
$path = base_path('vendor/bin');

config_path()

config_path函数返回应用配置目录的绝对路径:
$path = config_path();

database_path()

database_path函数返回应用数据库目录的绝对路径:
$path = database_path();

public_path()

public_path函数返回public目录的绝对路径:
$path = public_path();

storage_path()

storage_path函数返回storage目录的绝对路径:
$path = storage_path();
还可以使用storage_path函数生成相对于storage目录的给定文件的绝对路径:
$path = storage_path('app/file.txt');

表单提交

POST提交
{{ csrf_field() }}
PUT

@method('PUT')
 {{ csrf_field() }}

url路径设置

{{ route('category.update') }}
{{ url('admin/category/create') }}
{{ asset('admin/styles/extras.1.1.0.min.css') }}

带参数

{{ route('category.edit',$category->cate_id) }}
{{ url('admin/category/'.$category->cate_id.'/edit') }}
posted @ 2019-08-11 16:26  cicarius  阅读(284)  评论(0编辑  收藏  举报