laravel-admin CURD

laravel-admin 实现文章列表、添加、编辑、删除、分页、检索 laravel-admin 基础增删改查

效果图

laravel-admin curd
laravel-admin 入库

涉及文件

|--app
|--|--Admin
|--|--|--Controllers
|--|--|--|TestController.php #手动创建
|--|--|--routers.php
|--|--Models #手动创建
|--|--|--Movie.php #手动创建

TestController.php

<?php
namespace App\Admin\Controllers;
use App\Models\Movie;
use Encore\Admin\Controllers\AdminController;
use Encore\Admin\Form;
use Encore\Admin\Grid;

class TestController extends AdminController
{
    protected $title = '测试';

    protected function grid()
    {
        $grid = new Grid(new Movie());
        $grid->id('ID')->sortable();
        $grid->title('标题')->editable();
        $grid->director()->editable();
        $grid->describe()->editable();
        $grid->created_at();
        $grid->updated_at();
        return $grid;
    }
    protected function form()
    {
        $form = new Form(new Movie());
        $form->display('id', 'ID');
        $form->text('title', '标题')->rules('required');
        $form->text('director')->rules('required');
        $form->text('describe')->rules('required');
        $form->display('created_at', 'Created At');
        $form->display('updated_at', 'Updated At');
        return $form;
    }
}

Movie.php

<?php
namespace App\Models;
use Encore\Admin\Form;
use Encore\Admin\Grid;
use Illuminate\Database\Eloquent\Model;
use Spatie\EloquentSortable\Sortable;
use Spatie\EloquentSortable\SortableTrait;

class Movie extends Model implements Sortable
{
    use SortableTrait;

    protected $table = 'movies';

    public $sortable = [
        'order_column_name' => 'rate',
        'sort_when_creating' => true,
    ];

    public static function grid($callback)
    {
        return new Grid(new static, $callback);
    }
    public static function form($callback)
    {
        return new Form(new static, $callback);
    }
}

routers.php

<?php

use Illuminate\Routing\Router;

Admin::routes();

Route::group([
    'prefix'        => config('admin.route.prefix'),
    'namespace'     => config('admin.route.namespace'),
    'middleware'    => config('admin.route.middleware'),
], function (Router $router) {

    $router->get('/', 'HomeController@index')->name('admin.home');
    // CURD 路由
    $router->resources([
        'test'  => TestController::class,
    ]);
});

Tip: 查看composer.json如果下面包没有则需要安装

composer require "spatie/eloquent-sortable:^3.4"

composer require "spatie/laravel-backup:^5.0"

数据库表

CREATE TABLE `movies` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `director` int(10) unsigned NOT NULL,
  `describe` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `rate` tinyint unsigned NOT NULL,
  `released` enum('0', '1'),
  `release_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

Tip: SQL执行报错 ERROR 1067 (42000): Invalid default value for ‘release_at’

处理 === 去掉 sql_mode 中的 values: NO_ZERO_IN_DATE,NO_ZERO_DATE 即可

进入mysql 执行命令 show variables like 'sql_mode';

然后复制值 set session
sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
再重新设置值(Tip: 不要直接复制执行)

菜单添加

laravel-admin 菜单

相关资料

参考-ArticleController-demo
ERROR 1067-mysql报错

laravel-admin部署

laravel-admin 部署安装

环境说明

  • ubuntu
  • laradock
  • php7.2
  • mysql-5.7
  • laravel-5.5

部署步骤

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 阿里composer镜像服务

安装laravelcomposer create-project --prefer-dist laravel/laravel blog "5.5.*"

资源发布 php artisan vendor:publish --provider="Encore\Admin\AdminServiceProvider"

安装 php artisan admin:install Tip: 先配置.env数据库信息

启动服务后,在浏览器打开 http://localhost/admin/ ,使用用户名 admin 和密码 admin登录. Tip: 配置vhost

相关资料

laravel-admin 官方安装文档

PHP Fatal error: Class ‘Memcache’ not found

使用laradock构建镜像时报错误, Memcache

Memcache是什么?

Memcache是一个自由和开放源代码、高性能、分配的内存对象缓存系统。用于加速动态web应用程序,减轻数据库负载。它可以应对任意多个连接,使用非阻塞的网络IO。由于它的工作机制是在内存中开辟一块空间,然后建立一个Hash表,Memcached自管理这些Hash表。

Memcached是简单而强大的。它简单的设计促进迅速部署,易于发展所面临的问题,解决了很多大型数据缓存。它的API可供最流行的语言。

Memcache官方网站:http://memcached.org/

Memcached又是什么?

Memcache是该系统的项目名称,Memcached是该系统的主程序文件(字母d可以理解为daemon),以守护程序方式运行于一个或多个服务器中,随时接受客户端的连接操作,使用共享内存存取数据

修复处理

1.打开php-fpm/Dockerfile 文件大概在320行-或搜索关键字INSTALL_MEMCACHED 修改

原件部分代码

    && ( \  
        cd memcached \
        && phpize \
        && ./configure \
        && make -j$(nproc) \
        && make install \
    ) \
    && rm -r memcached \
    && rm /tmp/memcached.tar.gz \
    && docker-php-ext-enable memcached\
;fi

修改后代码

...
    && ( \  
        cd memcached \
        && phpize \
        && ./configure \
        && make -j$(nproc) \
        && make install \
    ) \
    && rm -r memcached \
    && rm /tmp/memcached.tar.gz \
    && pecl install memcache \
    && docker-php-ext-enable memcached memcache \
;fi
...

2.重新docker-compose build php-fpm

测试代码

<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
$memcache = new Memcached;             //创建一个memcache对象
$memcache->connect('memcached', 11211) or die ("Could not connect"); //连接Memcached服务器
$memcache->set('key', 'test');        //设置一个变量到内存中,名称是key 值是test
$get_value = $memcache->get('key');   //从内存中取出key的值

相关资料

memcache和memcached区别
PHP 连接 Memcached 服务
pecl-memcache

mojito部署

mojito laravel+elm 前后分离后台

部署安装文档中题的部署出现的问题

环境-mac laradock php-7.2 mysql-5.7 部署mojito1.1.*

ERROR in multi ./resources/assets/js/app.js ./resources/assets/sass/app.scss
Module not found: Error: Can't resolve '/var/www/mojito/resources/assets/js/app.js' in '/var/www/mojito'
 @ multi ./resources/assets/js/app.js ./resources/assets/sass/app.scss /js/app[0]

原文档内容

Mix 引入 admin.js

mix.js(‘resources/assets/js/app.js’, ‘public/js’)
.sass(‘resources/assets/sass/app.scss’, ‘public/css’)
//.js(‘resources/js/admin.js’, ‘public/js’) laravel5.7+
.js(‘resources/assets/js/admin.js’, ‘public/js’)

实验后

将下面代码替换文件原来的内容-(文件在跟目录) webpack.mix.js

mix.js('resources/js/app.js', 'public/js')
    .sass('resources/sass/app.scss', 'public/css')
    .js('resources/js/admin.js', 'public/js');

由于是部署在laradock中所以不能直接访问localhost

nginx-vhost

server {

    listen 80;
    listen [::]:80;

    # For https
    # listen 443 ssl;
    # listen [::]:443 ssl ipv6only=on;
    # ssl_certificate /etc/nginx/ssl/default.crt;
    # ssl_certificate_key /etc/nginx/ssl/default.key;

    server_name mojito.test;
    root /var/www/mojito/public;
    index index.php index.html index.htm;

    location / {
         try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_pass php-upstream;
        fastcgi_index index.php;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        #fixes timeouts
        fastcgi_read_timeout 600;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }

    location /.well-known/acme-challenge/ {
        root /var/www/letsencrypt/;
        log_not_found off;
    }

    error_log /var/log/nginx/laravel_error.log;
    access_log /var/log/nginx/laravel_access.log;
}

hosts文件末尾追加

127.0.0.1   mojito.test

浏览器打开:http://mojito.test/mojito#/admin/login

相关资料

mojito-文档
mojito-github

远程代码编辑方式

关于vbox虚拟机上编辑代码的方式、远程代码编辑、linux环境开发、ubuntu

方式1: 安装vbox增强功能 (会出现一些路径的问题-node上)
方式2: vscode 插件: Remote Development (vscode无法使用函数、类位置定位)
方式3: 利用samba共享文件-网络硬盘映射(可以使用vscode函数、类定位跳转)

相关资料

Visual Studio Code 远程开发
关于vscode远程开发的讨论

phpmailer-邮件发送失败

ECS上通过 phpmailer 发送邮件总失败 SMTP connect() failed

POP 服务器地址:pop3.mxhichina.com 端口110,SSL 加密端口995

IMAP 服务器地址:imap.mxhichina.com 端口143,SSL 加密端口993

SMTP 服务器地址:smtp.mxhichina.com 端口25, SSL 加密端口465

使用的thinkcmf-ECS上通过 phpmailer 发送邮件总失败 SMTP connect() failed

解决: 使用SSL协议, 端口为465

相关资料

企业云邮箱POP\SMTP\IMAP地址和端口信息

无题

  • laravel-后台API token管理、用户管理、权限管理、操作日志、文章管理、分类管理
  • vue后台模板(使用已开源的)
  • socket、swoole、easyswoole
  • phpmywind改造成自适应的(html-php混编)
  • mysql-数据优化、索引优化、事务、锁机制
  • redis 队列等场景使用
  • python 爬数据
  • go

todo-list

  • mac多php、mysql、nginx、apache版本安装
  • thinkpad共享文件夹-mac映射共享文件夹
  • vscode远程编辑配置
  • laravel-admin 参考 部署 moell-peng/mojito
  • easyswoole-长连接认证-laravel的各种认证对比