十一、轻松搭建网站管理后台


互联网上见到的多数网站都有一个你看不见的更强大的管理后台支持,比如一个新闻网站的管理后台一定有新闻编辑、发布、审核、管理等,一个论坛网站的管理后台一定有用户管理、板块管理、帖子审核等。这一节我们见识一下php框架的真正魅力:数行代码实现的强大管理后台

请尊重原创,转载请注明来源网站www.shareditor.com以及原始链接地址

sonata介绍

 

sonata扩展是symfony2众多扩展中应用最广泛的扩展之一,它的主要功能是帮你建立一个强大的管理后台,除此之外还有很多附加功能你可以深入挖掘,官方文档在https://sonata-project.org/bundles/admin/2-3/doc/index.html

 

composer扩展管理工具

 

为了安装symfony2的扩展,我们需要一个composer工具,它的安装方法(参考https://getcomposer.org/download/,以下命令如若失效,请以官方最新文档为准)为连续执行以下命令:

[root@centos7vm ~]# php -r "readfile('https://getcomposer.org/installer');" > composer-setup.php
[root@centos7vm ~]# php -r "if (hash_file('SHA384', 'composer-setup.php') === '7228c001f88bee97506740ef0888240bd8a760b046ee16db8f4095c0d8d525f2367663f22a46b48d072c816e7fe19959') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
[root@centos7vm ~]# php composer-setup.php
[root@centos7vm ~]# php -r "unlink('composer-setup.php');"

然后你会发现当前目录下有一个composer.phar文件,我们把它移动到/usr/local/bin下并重命名:

[root@centos7vm ~]# mv composer.phar /usr/local/bin/composer

ok,安装完成,执行

[root@centos7vm ~]# composer

看下是否输出帮助信息

 

安装sonata-admin

 

先看一下工程目录下的composer.json这个文件,这里面记录了当前工程都依赖哪些扩展包及其版本信息,这个文件一般我们不去编辑,当用composer更新扩展包时会自动更新这个文件

执行:

[root@centos7vm mywebsite]# composer require sonata-project/admin-bundle "2.3.*"

安装sonata的admin-bundle,因为admin-bundle会依赖一些其他bundle,所以安装过程可能会比较慢,需要耐心等待,当输出有:

 [OK] All assets were successfully installed.

说明安装完成

 

为了让admin-bundle能操作我们的数据库,还需要安装doctrine-orm-admin-bundle,执行:

[root@centos7vm mywebsite]# composer require sonata-project/doctrine-orm-admin-bundle "2.3.*"

 

安装了sonata扩展,相当于往vendor目录里拷贝了一批文件,但实际上我们还没有真正使用上,如果要使用起来,需要修改app/AppKernel.php把要使用的组件注册进来才能生效(所有的symfony2组件的安装都需要这个过程),修改app/AppKernel.php中的registerBundles()函数,在$bundles = array(...最后添加:

            new Sonata\CoreBundle\SonataCoreBundle(),
            new Sonata\BlockBundle\SonataBlockBundle(),
            new Knp\Bundle\MenuBundle\KnpMenuBundle(),
            new Sonata\DoctrineORMAdminBundle\SonataDoctrineORMAdminBundle(),
            new Sonata\AdminBundle\SonataAdminBundle(),

注:如果某个bundle已经注册过,则不需要重复注册

 

配置sonata-admin

 

sonata-admin的接口都是基于SonataBlockBundle,按block组织在一起的,所以必须先告诉blockbundle,sonata-admin这个block的存在,所以修改app/config/config.yml

添加如下配置(注意缩进):

sonata_block:
    default_contexts: [cms]
    blocks:
        # enable the SonataAdminBundle block
        sonata.admin.block.admin_list:
            contexts: [admin]

block配置完还需要给admin-bundle指定路由,这样才能通过url访问,admin-bundle是有自己的一套路由配置的,我们只需要加载进来即可,修改app/config/routing.yml,添加如下内容:

admin_area:
    resource: "@SonataAdminBundle/Resources/config/routing/sonata_admin.xml"
    prefix: /admin

OK,清缓存:

[root@centos7vm mywebsite]# php app/console cache:clear
[root@centos7vm mywebsite]# php app/console assets:install

访问http://172.16.142.130/app_dev.php/admin看看(这里的172.16.142.130是我的虚拟机ip,需要换成你的ip,另外如果访问不了可以尝试手工清缓存rm -rf app/cache/*),效果如下:

 

请尊重原创,转载请注明来源网站www.shareditor.com以及原始链接地址

 

创建BlogPost的后台管理

 

创建src/AppBundle/Admin/BlogPostAdmin.php文件,内容如下:

<?php

namespace AppBundle\Admin;

use Sonata\AdminBundle\Admin\Admin;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;

class BlogPostAdmin extends Admin
{
    protected function configureFormFields(FormMapper $formMapper)
    {
        $formMapper
            ->add('title', 'text')
            ->add('body', 'text')
            ->add('create_time', 'datetime');
    }

    protected function configureListFields(ListMapper $listMapper)
    {
        $listMapper
            ->addIdentifier('title')
            ->add('createTime')
            ;
    }
}

 

创建了BlogPostAdmin还不能让symfony2知道,所以还需要注册一下,修改app/config/services.yml,在services组中添加服务:

    admin.blog_post:
        class: AppBundle\Admin\BlogPostAdmin
        arguments: [~, AppBundle\Entity\BlogPost, ~]
        tags:
            - { name: sonata.admin, manager_type: orm, label: Blog post }

 

这样还不够,还需要配置好有关自定义Admin类的路由,修改app/config/routing.yml,添加:

_sonata_admin:
    resource: .
    type: sonata_admin
    prefix: /admin

 

OK,重新打开http://172.16.142.130/app_dev.php/admin看到如下:

 

点开"link_list"看到了什么?

 

 

(*@ο@*) 哇~,是我们手工在数据库里添加进去的那一行哎!

 

点击“link_add"进去添加一条记录试试,我们添加如下一行:

 

点击”btn_create_adn_return_to_list“后就成功写到了数据库里啦

 

 

到此,我们已经实现了对数据库表的增删改查的管理功能

搭建一个 NFT 网站,您需要以下步骤: 1. 选择一个适合您的 Web 开发框架 您可以使用像 React、Vue.js 或 Angular 等现代化的前端框架,以及像 Node.js、Django 或 Ruby on Rails 等后端框架来搭建一个完整的 Web 应用程序。您需要根据自己的技能和喜好选择一个框架,这个框架应该支持您想要实现的功能。 2. 编写智能合约 您需要使用 Solidity 编写智能合约,这是以太坊平台上的一种编程语言。您可以使用 Remix IDE 或 Truffle 等工具来编写、测试和部署智能合约。 3. 集成 MetaMask 或其他钱包 您需要为用户提供一个安全的方式来购买和出售 NFT ,通常会使用 MetaMask 或其他钱包插件来实现这一点。您需要在您的应用程序中集成这些钱包,并确保用户可以轻松地使用它们。 4. 开发后台管理系统 您需要开发一个后台管理系统,它可以让您管理和查看 NFT 的交易记录、价格和所有权。您可以使用现有的开源解决方案,比如 Django Admin 或 Flask Admin,或者自己编写一个后台管理系统。 5. 部署应用程序 最后,您需要将应用程序部署到一个可靠的服务器上,以确保用户可以访问它。您可以使用像 Heroku 或 AWS 等云托管平台来部署您的应用程序。 总体来说,搭建一个 NFT 网站需要一定的技术知识和经验。如果您不熟悉这些技术,建议您寻求专业开发人员的帮助。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值