目录
1、安装composer
2、创建你的laravel项目
3、安装Laravel-Administrator包 
4、配置包加载
5、生成Laravel-Administrator配置
6、配置Laravel-Administrator例子
7、配置你的网站
8、开始浏览你的网站
首页 php教程 php手册 laravel administrator 一款通用的后台插件(PHP框架扩展)

laravel administrator 一款通用的后台插件(PHP框架扩展)

Jun 06, 2016 pm 07:47 PM
administrator laravel 后台 实际的

前几天我看了一下zend framework 2的一些官方文档,也找了一些例子,可惜所有的资料少之甚少。于是我就开始去找这国外用的比较流行的PHP框架laravel,希望能够找到其合适的例子,而且我本就打算写一套后台管理系统,却正好发现了其扩展的包。Laravel-Adminis

前几天我看了一下zend framework 2的一些官方文档,也找了一些例子,可惜所有的资料少之甚少。于是我就开始去找这国外用的比较流行的PHP框架laravel,希望能够找到其合适的例子,而且我本就打算写一套后台管理系统,却正好发现了其扩展的包。Laravel-Administrator后台扩展包,提供了基本上通用的界面以及数据操作的例子,我们再也不需要自己去找模板了,特别在这个html5开始盛行的时候,一步步苦苦摸索实在太费时费力。做过后台的朋友不妨看看,这可以使你的工作更快快速和方便。

1、安装composer

  自从vim有统一的插件管理工具pathogen后,估摸着PHP的爱好者才想出了这么一个主意,统一的(依赖)管理器,开源插件进行统一管理也的确势在必行,不说废话了,首先看看怎么安装这个东西吧。

curl -s http:<span>//</span><span>getcomposer.org/installer| php && mv composer.phar /usr/sbin/composer</span>
登录后复制

2、创建你的laravel项目

  一条命令就帮你搭建好了基本的架构,是不是很方便呢?

composer create-project laravel/laravel your-project-name <span>#</span><span>记得改成你的项目名称</span>
登录后复制

3、安装Laravel-Administrator包 

cd your-project-name && vim composer.json <span>#</span><span>进入项目目录并编辑composer.json,把"frozennode/administrator": "dev-master"加入到"require"下</span>
登录后复制

  以下为最终的配置:

<span>{
    </span>"name": "laravel/laravel"<span>,
    </span>"description": "The Laravel Framework."<span>,
    </span>"keywords": ["framework", "laravel"<span>],
    </span>"license": "MIT"<span>,
    </span>"require"<span>: {
        </span>"laravel/framework": "4.2.*"<span>,
        </span>"frozennode/administrator": "dev-master"<span>
    },
    </span>"autoload"<span>: {
        </span>"classmap"<span>: [
            </span>"app/commands"<span>,
            </span>"app/controllers"<span>,
            </span>"app/models"<span>,
            </span>"app/database/migrations"<span>,
            </span>"app/database/seeds"<span>,
            </span>"app/tests/TestCase.php"<span>
        ]
    },
    </span>"scripts"<span>: {
        </span>"post-install-cmd"<span>: [
            </span>"php artisan clear-compiled"<span>,
            </span>"php artisan optimize"<span>
        ],
        </span>"post-update-cmd"<span>: [
            </span>"php artisan clear-compiled"<span>,
            </span>"php artisan optimize"<span>
        ],
        </span>"post-create-project-cmd"<span>: [
            </span>"php artisan key:generate"<span>
        ]
    },
    </span>"config"<span>: {
        </span>"preferred-install": "dist"<span>
    },
    </span>"minimum-stability": "stable"<span>
}</span>
登录后复制

4、配置包加载

vim app/config/app.php <span>#</span><span>找到数组providers,并在最后加入'Frozennode\Administrator\AdministratorServiceProvider',</span>
登录后复制

  以下为最终的配置:

<span>php

</span><span>return</span> <span>array</span><span>(

    </span><span>/*</span><span>
    |--------------------------------------------------------------------------
    | Application Debug Mode
    |--------------------------------------------------------------------------
    |
    | When your application is in debug mode, detailed error messages with
    | stack traces will be shown on every error that occurs within your
    | application. If disabled, a simple generic error page is shown.
    |
    </span><span>*/</span>

    'debug' => <span>true</span>,

    <span>/*</span><span>
    |--------------------------------------------------------------------------
    | Application URL
    |--------------------------------------------------------------------------
    |
    | This URL is used by the console to properly generate URLs when using
    | the Artisan command line tool. You should set this to the root of
    | your application so that it is used when running Artisan tasks.
    |
    </span><span>*/</span>

    'url' => 'http://pfadmins.local.com',

    <span>/*</span><span>
    |--------------------------------------------------------------------------
    | Application Timezone
    |--------------------------------------------------------------------------
    |
    | Here you may specify the default timezone for your application, which
    | will be used by the PHP date and date-time functions. We have gone
    | ahead and set this to a sensible default for you out of the box.
    |
    </span><span>*/</span>

    'timezone' => 'UTC',

    <span>/*</span><span>
    |--------------------------------------------------------------------------
    | Application Locale Configuration
    |--------------------------------------------------------------------------
    |
    | The application locale determines the default locale that will be used
    | by the translation service provider. You are free to set this value
    | to any of the locales which will be supported by the application.
    |
    </span><span>*/</span>

    'locale' => 'en',

    <span>/*</span><span>
    |--------------------------------------------------------------------------
    | Application Fallback Locale
    |--------------------------------------------------------------------------
    |
    | The fallback locale determines the locale to use when the current one
    | is not available. You may change the value to correspond to any of
    | the language folders that are provided through your application.
    |
    </span><span>*/</span>

    'fallback_locale' => 'en',

    <span>/*</span><span>
    |--------------------------------------------------------------------------
    | Encryption Key
    |--------------------------------------------------------------------------
    |
    | This key is used by the Illuminate encrypter service and should be set
    | to a random, 32 character string, otherwise these encrypted strings
    | will not be safe. Please do this before deploying an application!
    |
    </span><span>*/</span>

    'key' => '4g1RkrnrYg1UdkEHxUV3p8UBAlnTmWiZ',

    'cipher' => MCRYPT_RIJNDAEL_128,

    <span>/*</span><span>
    |--------------------------------------------------------------------------
    | Autoloaded Service Providers
    |--------------------------------------------------------------------------
    |
    | The service providers listed here will be automatically loaded on the
    | request to your application. Feel free to add your own services to
    | this array to grant expanded functionality to your applications.
    |
    </span><span>*/</span>

    'providers' => <span>array</span><span>(

        </span>'Illuminate\Foundation\Providers\ArtisanServiceProvider',
        'Illuminate\Auth\AuthServiceProvider',
        'Illuminate\Cache\CacheServiceProvider',
        'Illuminate\Session\CommandsServiceProvider',
        'Illuminate\Foundation\Providers\ConsoleSupportServiceProvider',
        'Illuminate\Routing\ControllerServiceProvider',
        'Illuminate\Cookie\CookieServiceProvider',
        'Illuminate\Database\DatabaseServiceProvider',
        'Illuminate\Encryption\EncryptionServiceProvider',
        'Illuminate\Filesystem\FilesystemServiceProvider',
        'Illuminate\Hashing\HashServiceProvider',
        'Illuminate\Html\HtmlServiceProvider',
        'Illuminate\Log\LogServiceProvider',
        'Illuminate\Mail\MailServiceProvider',
        'Illuminate\Database\MigrationServiceProvider',
        'Illuminate\Pagination\PaginationServiceProvider',
        'Illuminate\Queue\QueueServiceProvider',
        'Illuminate\Redis\RedisServiceProvider',
        'Illuminate\Remote\RemoteServiceProvider',
        'Illuminate\Auth\Reminders\ReminderServiceProvider',
        'Illuminate\Database\SeedServiceProvider',
        'Illuminate\Session\SessionServiceProvider',
        'Illuminate\Translation\TranslationServiceProvider',
        'Illuminate\Validation\ValidationServiceProvider',
        'Illuminate\View\ViewServiceProvider',
        'Illuminate\Workbench\WorkbenchServiceProvider',
        'Frozennode\Administrator\AdministratorServiceProvider',<span>

    )</span>,

    <span>/*</span><span>
    |--------------------------------------------------------------------------
    | Service Provider Manifest
    |--------------------------------------------------------------------------
    |
    | The service provider manifest is used by Laravel to lazy load service
    | providers which are not needed for each request, as well to keep a
    | list of all of the services. Here, you may set its storage spot.
    |
    </span><span>*/</span>

    'manifest' => storage_path().'/meta',

    <span>/*</span><span>
    |--------------------------------------------------------------------------
    | Class Aliases
    |--------------------------------------------------------------------------
    |
    | This array of class aliases will be registered when this application
    | is started. However, feel free to register as many as you wish as
    | the aliases are "lazy" loaded so they don't hinder performance.
    |
    </span><span>*/</span>

    'aliases' => <span>array</span><span>(

        </span>'App'             => 'Illuminate\Support\Facades\App',
        'Artisan'         => 'Illuminate\Support\Facades\Artisan',
        'Auth'            => 'Illuminate\Support\Facades\Auth',
        'Blade'           => 'Illuminate\Support\Facades\Blade',
        'Cache'           => 'Illuminate\Support\Facades\Cache',
        'ClassLoader'     => 'Illuminate\Support\ClassLoader',
        'Config'          => 'Illuminate\Support\Facades\Config',
        'Controller'      => 'Illuminate\Routing\Controller',
        'Cookie'          => 'Illuminate\Support\Facades\Cookie',
        'Crypt'           => 'Illuminate\Support\Facades\Crypt',
        'DB'              => 'Illuminate\Support\Facades\DB',
        'Eloquent'        => 'Illuminate\Database\Eloquent\Model',
        'Event'           => 'Illuminate\Support\Facades\Event',
        'File'            => 'Illuminate\Support\Facades\File',
        'Form'            => 'Illuminate\Support\Facades\Form',
        'Hash'            => 'Illuminate\Support\Facades\Hash',
        'HTML'            => 'Illuminate\Support\Facades\HTML',
        'Input'           => 'Illuminate\Support\Facades\Input',
        'Lang'            => 'Illuminate\Support\Facades\Lang',
        'Log'             => 'Illuminate\Support\Facades\Log',
        'Mail'            => 'Illuminate\Support\Facades\Mail',
        'Paginator'       => 'Illuminate\Support\Facades\Paginator',
        'Password'        => 'Illuminate\Support\Facades\Password',
        'Queue'           => 'Illuminate\Support\Facades\Queue',
        'Redirect'        => 'Illuminate\Support\Facades\Redirect',
        'Redis'           => 'Illuminate\Support\Facades\Redis',
        'Request'         => 'Illuminate\Support\Facades\Request',
        'Response'        => 'Illuminate\Support\Facades\Response',
        'Route'           => 'Illuminate\Support\Facades\Route',
        'Schema'          => 'Illuminate\Support\Facades\Schema',
        'Seeder'          => 'Illuminate\Database\Seeder',
        'Session'         => 'Illuminate\Support\Facades\Session',
        'SoftDeletingTrait' => 'Illuminate\Database\Eloquent\SoftDeletingTrait',
        'SSH'             => 'Illuminate\Support\Facades\SSH',
        'Str'             => 'Illuminate\Support\Str',
        'URL'             => 'Illuminate\Support\Facades\URL',
        'Validator'       => 'Illuminate\Support\Facades\Validator',
        'View'            => 'Illuminate\Support\Facades\View',<span>

    )</span>,<span>

);</span>
登录后复制

5、生成Laravel-Administrator配置

  php artisan config:publish frozennode/administrator <span>#</span><span>生成配置</span>
  vim app/config/packages/frozennode/administrator/administrator.php <span>#</span><span>你可以编辑此文件配置后台参数</span>
登录后复制

6、配置Laravel-Administrator例子

  如果没有示例我们也不知道如何开始,那么就让我们看看这个插件包所给出的例子吧。

  cd ../ <span>#</span><span>退到工作目录</span>
  git clone https://github.com/FrozenNode/Laravel-Administrator <span>#</span><span>下载插件</span>
  cp Laravel-Administrator/examples/app/config/packages/frozennode/administrator/administrator.php your-project-name/app/config/packages/frozennode/administrator/<span>
  cp Laravel</span>-Administrator/examples/app/config/administrator your-project-name/app/config/ -<span>r
  cp Laravel</span>-Administrator/examples/app/models your-project-name/app/ -<span>r
  cp Laravel</span>-Administrator/examples/app/database/migrations/* your-project-name/app/database/migrations/<span>
  mkdir </span>-p your-project-name/public/packages/frozennode/<span>administrator
  cp Laravel</span>-Administrator/public/* your-project-name/public/packages/frozennode/administrator/ -<span>r<br></span>
登录后复制

  <span>#</span><span>创建数据库</span>
  <span>#</span><span>首先根据你数据库的配置创建出你需要的数据,这里以mysql为例</span>
  cd your-project-name <span>#</span><span> 进入你的项目目录</span>
  vim app/config/database.php
登录后复制

  以下为我的配置:

<span>php

</span><span>return</span> <span>array</span><span>(

    </span><span>/*</span><span>
    |--------------------------------------------------------------------------
    | PDO Fetch Style
    |--------------------------------------------------------------------------
    |
    | By default, database results will be returned as instances of the PHP
    | stdClass object; however, you may desire to retrieve records in an
    | array format for simplicity. Here you can tweak the fetch style.
    |
    </span><span>*/</span>

    'fetch' => PDO::FETCH_CLASS,

    <span>/*</span><span>
    |--------------------------------------------------------------------------
    | Default Database Connection Name
    |--------------------------------------------------------------------------
    |
    | Here you may specify which of the database connections below you wish
    | to use as your default connection for all database work. Of course
    | you may use many connections at once using the Database library.
    |
    </span><span>*/</span>

    'default' => 'mysql',

    <span>/*</span><span>
    |--------------------------------------------------------------------------
    | Database Connections
    |--------------------------------------------------------------------------
    |
    | Here are each of the database connections setup for your application.
    | Of course, examples of configuring each database platform that is
    | supported by Laravel is shown below to make development simple.
    |
    |
    | All database work in Laravel is done through the PHP PDO facilities
    | so make sure you have the driver for your particular database of
    | choice installed on your machine before you begin development.
    |
    </span><span>*/</span>

    'connections' => <span>array</span><span>(

        </span>'sqlite' => <span>array</span><span>(
            </span>'driver'   => 'sqlite',
            'database' => __DIR__.'/../database/production.sqlite',
            'prefix'   => '',<span>
        )</span>,

        'mysql' => <span>array</span><span>(
            </span>'driver'    => 'mysql',
            'host'      => 'localhost',
            'database'  => 'pf_admindb',
            'username'  => 'root',
            'password'  => 'mysql',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',<span>
        )</span>,

        'pgsql' => <span>array</span><span>(
            </span>'driver'   => 'pgsql',
            'host'     => 'localhost',
            'database' => 'forge',
            'username' => 'forge',
            'password' => '',
            'charset'  => 'utf8',
            'prefix'   => '',
            'schema'   => 'public',<span>
        )</span>,

        'sqlsrv' => <span>array</span><span>(
            </span>'driver'   => 'sqlsrv',
            'host'     => 'localhost',
            'database' => 'database',
            'username' => 'root',
            'password' => '',
            'prefix'   => '',<span>
        )</span>,<span>

    )</span>,

    <span>/*</span><span>
    |--------------------------------------------------------------------------
    | Migration Repository Table
    |--------------------------------------------------------------------------
    |
    | This table keeps track of all the migrations that have already run for
    | your application. Using this information, we can determine which of
    | the migrations on disk haven't actually been run in the database.
    |
    </span><span>*/</span>

    'migrations' => 'migrations',

    <span>/*</span><span>
    |--------------------------------------------------------------------------
    | Redis Databases
    |--------------------------------------------------------------------------
    |
    | Redis is an open source, fast, and advanced key-value store that also
    | provides a richer set of commands than a typical key-value systems
    | such as APC or Memcached. Laravel makes it easy to dig right in.
    |
    </span><span>*/</span>

    'redis' => <span>array</span><span>(

        </span>'cluster' => <span>false</span>,

        'default' => <span>array</span><span>(
            </span>'host'     => '127.0.0.1',
            'port'     => 6379,
            'database' => 0,<span>
        )</span>,<span>

    )</span>,<span>

);</span>
登录后复制

  保证数据库用户、密码、IP、端口正确的情况下,还需保证你的数据库存在后再执行以下命令。

  php artisan migrate:install && php artisan migrate <span>#</span><span> 创建数据库及表</span>
  <span>#</span><span>以下是创建生成数据库表的一些命令,了解即可</span>
  <span>#</span><span>php artisan migrate:make create_directors_table</span>
  <span>#</span><span>php artisan migrate:make create_films_table</span>
  <span>#</span><span>php artisan migrate:make create_box_office</span>
  <span>#</span><span>php artisan migrate:make create_actors</span>
  <span>#</span><span>php artisan migrate:make create_actors_films</span>
  <span>#</span><span>php artisan migrate:make create_theaters</span>
  <span>#</span><span>php artisan migrate:make create_films_theaters</span>
登录后复制

7、配置你的网站

  上次说到配置zend framework 2的时候,特别讲到这个配置,而laravel配置是一模一样的。

<span>  server {
    listen </span>80<span>;
    server_name zf2.local.com; </span><span>#</span><span>域名</span>
    root /data/www/zf2/public; <span>#</span><span>你的网站目录,即项目目录记得加上public,否则访问方法不同</span>
<span>    index index.php;
    </span><span>#</span><span>charset utf-8;</span>
    location ~* \.(js|ico|gif|jpg|png|css|jpeg|swf)$<span> {
      access_log off;
      expires 2d;
    }

    location </span>/<span> {
      </span><span>if</span> (!<span>-f</span> <span>$request_filename</span><span>) {
        rewrite ^(.</span>+)$ /index.php?<span>$1</span>&<span> last;
      }
    }
  
    location ~ \.php</span>$<span> {
      </span><span>#</span><span>root /var/www/html/public;</span>
      fastcgi_pass 127.0.0.1:9000; <span>#</span><span>如果你的php-fpm的监听端口不是这个,请设置</span>
<span>      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME </span><span>$document_root$fastcgi_script_name</span><span>;
      include fastcgi_params;
    }

    </span><span>#</span><span> deny access to .htaccess files, if Apache’s document root</span>
    <span>#</span><span> concurs with nginx’s one</span>
    <span>#
</span>    location ~ /<span>\.ht {
      deny all;
    }
  }</span>
登录后复制

8、开始浏览你的网站

  将服务器IP与你的域名绑定,开始浏览,我这里的地址为http://pfadmins.local.com/admin。一定要加上admin,因为后台的url就在admin,当然你可以配置。

laravel administrator 一款通用的后台插件(PHP框架扩展)

laravel administrator 一款通用的后台插件(PHP框架扩展)

laravel administrator 一款通用的后台插件(PHP框架扩展)

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
laravel入门实例 laravel入门实例 Apr 18, 2025 pm 12:45 PM

Laravel 是一款 PHP 框架,用于轻松构建 Web 应用程序。它提供一系列强大的功能,包括:安装: 使用 Composer 全局安装 Laravel CLI,并在项目目录中创建应用程序。路由: 在 routes/web.php 中定义 URL 和处理函数之间的关系。视图: 在 resources/views 中创建视图以呈现应用程序的界面。数据库集成: 提供与 MySQL 等数据库的开箱即用集成,并使用迁移来创建和修改表。模型和控制器: 模型表示数据库实体,控制器处理 HTTP 请求。

解决 Craft CMS 中的缓存问题:使用 wiejeben/craft-laravel-mix 插件 解决 Craft CMS 中的缓存问题:使用 wiejeben/craft-laravel-mix 插件 Apr 18, 2025 am 09:24 AM

在使用CraftCMS开发网站时,常常会遇到资源文件缓存的问题,特别是当你频繁更新CSS和JavaScript文件时,旧版本的文件可能仍然被浏览器缓存,导致用户无法及时看到最新的更改。这个问题不仅影响用户体验,还会增加开发和调试的难度。最近,我在项目中遇到了类似的困扰,经过一番探索,我找到了wiejeben/craft-laravel-mix这个插件,它完美地解决了我的缓存问题。

Laravel如何学习 怎么免费学习Laravel Laravel如何学习 怎么免费学习Laravel Apr 18, 2025 pm 12:51 PM

想要学习 Laravel 框架,但苦于没有资源或经济压力?本文为你提供了免费学习 Laravel 的途径,教你如何利用网络平台、文档和社区论坛等资源,从入门到掌握,为你的 PHP 开发之旅奠定坚实基础。

laravel用户登录功能 laravel用户登录功能 Apr 18, 2025 pm 12:48 PM

Laravel 提供了一个全面的 Auth 框架,用于实现用户登录功能,包括:定义用户模型(Eloquent 模型)创建登录表单(Blade 模板引擎)编写登录控制器(继承 Auth\LoginController)验证登录请求(Auth::attempt)登录成功后重定向(redirect)考虑安全因素:哈希密码、防 CSRF 保护、速率限制和安全标头。此外,Auth 框架还提供重置密码、注册和验证电子邮件等功能。详情请参阅 Laravel 文档:https://laravel.com/doc

laravel框架安装方法 laravel框架安装方法 Apr 18, 2025 pm 12:54 PM

文章摘要:本文提供了详细分步说明,指导读者如何轻松安装 Laravel 框架。Laravel 是一个功能强大的 PHP 框架,它 упростил 和加快了 web 应用程序的开发过程。本教程涵盖了从系统要求到配置数据库和设置路由等各个方面的安装过程。通过遵循这些步骤,读者可以快速高效地为他们的 Laravel 项目打下坚实的基础。

laravel怎么查看版本号 laravel查看版本号方法 laravel怎么查看版本号 laravel查看版本号方法 Apr 18, 2025 pm 01:00 PM

Laravel框架内置了多种方法来方便地查看其版本号,满足开发者的不同需求。本文将探讨这些方法,包括使用Composer命令行工具、访问.env文件或通过PHP代码获取版本信息。这些方法对于维护和管理Laravel应用程序的版本控制至关重要。

laravel有哪些版本 laravel新手版本选择方法 laravel有哪些版本 laravel新手版本选择方法 Apr 18, 2025 pm 01:03 PM

在面向初学者的 Laravel 框架版本选择指南中,本文深入探讨了 Laravel 的版本差异,旨在协助初学者在众多版本之间做出明智的选择。我们将重点介绍每个版本的关键特征、比较它们的优缺点,并提供有用的建议,帮助新手根据他们的技能水准和项目需求挑选最合适的 Laravel 版本。对于初学者来说,选择一个合适的 Laravel 版本至关重要,因为它可以显著影响他们的学习曲线和整体开发体验。

laravel和thinkphp的区别 laravel和thinkphp的区别 Apr 18, 2025 pm 01:09 PM

Laravel 和 ThinkPHP 都是流行的 PHP 框架,在开发中各有优缺点。本文将深入比较这两者,重点介绍它们的架构、特性和性能差异,以帮助开发者根据其特定项目需求做出明智的选择。

See all articles