O cache Redis deve ser usado, o cache de arquivo e banco de dados não suporta tags()
Endereço de download do Windows Redis: http://pan.baidu.com/s/1i56thcD
Use rapidamente o cache Redis e o cache Redis no nível 5: https://laravel-china.org/topics/877
Adquira você mesmo o modelo de front-end. Se houver alguma violação, entre em contato com o autor.
Extensão de função de permissões de usuário: zizaco/entrust
extensão redis: predis/predis
Selecione a extensão de ativação no menu: hieu-le/active
Extensão de banco de dados: formato de array retornado pela consulta prettus/l5-repository
Descrição da dependência da arquitetura: http://oomusou.io/laravel/laravel-architecture/
API jQuery DataTables para Laravel: yajra/laravel-datatables-oracle
Extensão de leitura de log: configuração de log do aplicativo arcanedev/log-viewer
'log' => env('APP_LOG', 'daily'),
Extensão de processamento de imagem: intervention/image
Extensão PHP Redis
Extensão PHP cURL
Extensão PHP OpenSSL
PHP fileinfo é necessário para expandir o módulo de gerenciamento de materiais
http://datatables.club/
https://datatables.yajrabox.com
Edição embutida: https://vitalets.github.io/x-editable/docs.html
https://github.com/DukeAnn/Laradmin/blob/master/UpdateLog.md
1. Puxe o código para local,
2. composer install
3. Defina o arquivo de configuração .evn
para conectar-se ao banco de dados e ao servidor de envio de e-mail padrão, defina APP_URL=http://laradmin.app
e execute php artisan key:generate
para gerar a chave.
4. Execute a migração e a população
5. php artisan migrate --seed
Instalação concluída
Endereço de demonstração: http://admin.amyair.cn
Conta de teste: Cadastre-se diretamente no canto superior direito
1. A extensão de gerenciamento de permissão não usa a extensão de banco de dados l5.
2. O menu esquerdo de fundo corresponde automaticamente ao estado selecionado. Todas as rotas no site devem ser nomeadas e os prefixos de nomenclatura da rota na mesma opção de menu são consistentes, como: admin.index
, admin.create
, admin.show
,. admin.edit
, etc., tipo de recurso As rotas são nomeadas automaticamente. Os nomes das rotas que terminam em índice são todos exibidos no menu esquerdo em segundo plano. Use route();
quando o programa fizer um salto direcional. Se as permissões das subcategorias no menu de nível superior forem proibidas, adicione as permissões do usuário do menu de nível superior e defina-as para que o usuário não tenha permissões e o menu não seja exibido. O princípio de exibição do menu de fundo é consultar as permissões do usuário através do uri do menu. Se a permissão estiver definida, verifique se há permissão. Caso contrário, ela não será exibida. Se não estiver definida, não haverá nenhum requisito de permissão por padrão. . O uri definido para itens de menu com subclasses não será gerado em html, mas apenas gerará um JavaScript:; portanto, não reportará um erro se for definido como um nome de rota inexistente. O uri sem submenu será analisado usando. a função route(). Se o nome da rota não existir, um erro será relatado.
3. A localização atual na página é gravada no pacote de idiomas. O nome no pacote de idiomas corresponde ao valor de Route::currentRouteName();
AppPresentersAdminCrumbsService
, que não está definido no pacote de idiomas, exibe diretamente o valor-chave do pacote de idiomas.
4. O roteamento de fechamento não pode ser usado para roteamento. A rota deve ser nomeada, caso contrário, Route::currentRouteName();
5. A autenticação de permissão usa permissões para vincular o nome da rota e verificá-lo no middleware app/Http/Middleware/CheckPermission.php
. As permissões de envio de formulário são verificadas em app/Http/Requests
. não haverá restrições de permissão.
6. Ao adicionar um menu em segundo plano, não é permitido adicionar um nome de rota existente, caso contrário o site irá travar. Porque o menu será exibido à esquerda após adicioná-lo, mas se o nome da rota não existir, ele não poderá ser analisado e um erro será relatado. Se você acidentalmente cometer um erro, execute php artisan cache:clear
para limpar o cache e deletar os dados errados inseridos no banco de dados! Basta atualizar a página.
###formato json é comum à API
{
"code" : 0 ,
"url" : http://...
"message" : " ... " ,
"errors" : [
{
"code" : 10000 ,
"field" : " user " ,
"message" : "用户 不存在。 "
}
],
"pagination" : {
"total" : 10 ,
"per_page" : 10 ,
"current_page" : 1 ,
"last_page" : 1 ,
"from" : 1 ,
"to" : 10
},
"data" : {
...
}
}
####json code
de descrição do valor de retorno código de status do resultado do processamento, bem-sucedido é 0, obrigatório
O endereço de salto após url
ser processado com sucesso pode ser deixado em branco.
Informações de notificação de conclusão do processamento message
, opcional
errors
informações de erro
Informações de paginação solicitadas pela pagination
Informações de dados solicitadas por data
errors
e data
não podem existir ao mesmo tempo
Voltar a usar
return response(['code' => -1, 'message' => '账号或者密码错误'], 400);
ou
return response()->json(['code' => -1, 'message' => '账号或者密码错误'], 400);
Análise AJAX
var settings = {
type : "POST" ,
data : { } ,
url : url ,
dataType : "json" ,
success : function ( data ) {
if ( data . code == 0 ) {
window . location . href = data . url ;
}
} ,
error : function ( XMLHttpRequest ) {
$ ( '#login-error' ) . show ( ) ;
if ( XMLHttpRequest . responseJSON . code == - 1 ) {
$ ( '#login-error-message' ) . text ( XMLHttpRequest . responseJSON . message ) ;
} else {
$ ( '#login-error-message' ) . text ( "请填写邮箱和密码" ) ;
}
} ,
headers : {
'X-CSRF-TOKEN' : $ ( 'meta[name="csrf-token"]' ) . attr ( 'content' )
}
} ;
$ . ajax ( settings )
php artisan make:entity name
, cria automaticamente arquivos de modelo, arquivos de migração de banco de dados, dois arquivos no Repositório, arquivos de provedores, opcionalmente gera arquivos de apresentador, validador e controlador
php artisan make:repository name
, gera arquivos de modelo, arquivos de migração de banco de dados e dois arquivos em Repositório