ixudra/portfolio

为Laravel 5框架开发的定制PHP作品集库 - 由Ixudra开发

2.1.0 2023-08-08 20:04 UTC

This package is auto-updated.

Last update: 2024-09-08 22:34:47 UTC


README

Latest Version on Packagist license Total Downloads

为Laravel 6框架开发的定制PHP作品集包 - 由Ixudra开发。

此包可随时由任何人使用,但请注意,它针对我的个人定制工作流程进行了优化。它可能不适合您的项目,可能需要进行修改。

安装

通过Composer引入此包

    {
        "require": {
            "ixudra/portfolio": "2.*"
        }
    }

将服务提供者添加到您的config/app.php文件中。此外,您还需要包含包依赖项的服务提供者

    'providers'         => array(

        //...

        Collective\Html\HtmlServiceProvider::class,
        Ixudra\Portfolio\PortfolioServiceProvider::class,
        Ixudra\Translation\TranslationServiceProvider::class,
        Ixudra\Imageable\ImageableServiceProvider::class,

    ),

尽管该包本身没有外观,但它确实依赖于几个依赖项的外观才能正确运行。您还需要将这些添加到您的config/app.php文件中

    'facades'       => array(

        //...

        'HTML'              => Collective\Html\HtmlFacade::class,
        'Form'              => Collective\Html\FormFacade::class,
        'Translate'         => Ixudra\Translation\Facades\Translation::class,

    ),

请注意,这些外观仅在有需要将包作为默认配置使用时才需要。使用这些外观不是强制性的,您也可以不使用它们来利用该包。但这可能需要您进行大量的自定义。

使用Artisan运行包迁移

    // Run the migration for the ixudra/portfolio package
    php artisan migrate --package="ixudra/portfolio"

    // Run the migration for the ixudra/imageable package
    php artisan migrate --package="ixudra/imageable"

或者,您也可以使用Artisan发布迁移

    // Publish all resources from all packages
    php artisan vendor:publish

    // Publish only the resources of the package
    php artisan vendor:publish --provider="Ixudra\\Portfolio\\PortfolioServiceProvider" --tag="migrations"

    // Publish only the resources of ixudra/imageable package
    php artisan vendor:publish --provider="Ixudra\\Imageable\\ImageableServiceProvider" --tag="migrations"

注册应用的路由,并应用正确的中间件和/或前缀

    Route::group(array('middleware' => array('web', 'auth')), function()
    {
        Route::get(     'customers',                                array('as' => 'customers.index',                                    'uses' => '\Ixudra\Portfolio\Http\Controllers\CustomerController@index'));
        Route::post(    'customers',                                array('as' => 'customers.index.process',                            'uses' => '\Ixudra\Portfolio\Http\Controllers\CustomerController@index'));
        Route::get(     'customers/create',                         array('as' => 'customers.create',                                   'uses' => '\Ixudra\Portfolio\Http\Controllers\CustomerController@create'));
        Route::post(    'customers',                                array('as' => 'customers.store',                                    'uses' => '\Ixudra\Portfolio\Http\Controllers\CustomerController@store'));
        Route::get(     'customers/{id}',                           array('as' => 'customers.show',                                     'uses' => '\Ixudra\Portfolio\Http\Controllers\CustomerController@show'));
        Route::get(     'customers/{id}/edit',                      array('as' => 'customers.edit',                                     'uses' => '\Ixudra\Portfolio\Http\Controllers\CustomerController@edit'));
        Route::put(     'customers/{id}',                           array('as' => 'customers.edit.process',                             'uses' => '\Ixudra\Portfolio\Http\Controllers\CustomerController@update'));
        Route::delete(  'customers/{id}',                           array('as' => 'customers.delete',                                   'uses' => '\Ixudra\Portfolio\Http\Controllers\CustomerController@destroy'));
        Route::get(     'customers/filter',                         array('as' => 'customers.filter',                                   'uses' => '\Ixudra\Portfolio\Http\Controllers\CustomerController@filter'));
        Route::post(    'customers/filter',                         array('as' => 'customers.filter.process',                           'uses' => '\Ixudra\Portfolio\Http\Controllers\CustomerController@filter'));

        Route::get(     'projects',                                 array('as' => 'projects.index',                                     'uses' => '\Ixudra\Portfolio\Http\Controllers\ProjectController@index'));
        Route::post(    'projects',                                 array('as' => 'projects.index.process',                             'uses' => '\Ixudra\Portfolio\Http\Controllers\ProjectController@index'));
        Route::get(     'projects/create',                          array('as' => 'projects.create',                                    'uses' => '\Ixudra\Portfolio\Http\Controllers\ProjectController@create'));
        Route::post(    'projects',                                 array('as' => 'projects.store',                                     'uses' => '\Ixudra\Portfolio\Http\Controllers\ProjectController@store'));
        Route::get(     'projects/{id}',                            array('as' => 'projects.show',                                      'uses' => '\Ixudra\Portfolio\Http\Controllers\ProjectController@show'));
        Route::get(     'projects/{id}/edit',                       array('as' => 'projects.edit',                                      'uses' => '\Ixudra\Portfolio\Http\Controllers\ProjectController@edit'));
        Route::put(     'projects/{id}',                            array('as' => 'projects.edit.process',                              'uses' => '\Ixudra\Portfolio\Http\Controllers\ProjectController@update'));
        Route::delete(  'projects/{id}',                            array('as' => 'projects.delete',                                    'uses' => '\Ixudra\Portfolio\Http\Controllers\ProjectController@destroy'));
        Route::get(     'projects/filter',                          array('as' => 'projects.filter',                                    'uses' => '\Ixudra\Portfolio\Http\Controllers\ProjectController@filter'));
        Route::post(    'projects/filter',                          array('as' => 'projects.filter.process',                            'uses' => '\Ixudra\Portfolio\Http\Controllers\ProjectController@filter'));

        Route::get(     'project-types',                            array('as' => 'projectTypes.index',                                 'uses' => '\Ixudra\Portfolio\Http\Controllers\ProjectTypeController@index'));
        Route::post(    'project-types',                            array('as' => 'projectTypes.index.process',                         'uses' => '\Ixudra\Portfolio\Http\Controllers\ProjectTypeController@index'));
        Route::get(     'project-types/create',                     array('as' => 'projectTypes.create',                                'uses' => '\Ixudra\Portfolio\Http\Controllers\ProjectTypeController@create'));
        Route::post(    'project-types',                            array('as' => 'projectTypes.store',                                 'uses' => '\Ixudra\Portfolio\Http\Controllers\ProjectTypeController@store'));
        Route::get(     'project-types/{id}',                       array('as' => 'projectTypes.show',                                  'uses' => '\Ixudra\Portfolio\Http\Controllers\ProjectTypeController@show'));
        Route::get(     'project-types/{id}/edit',                  array('as' => 'projectTypes.edit',                                  'uses' => '\Ixudra\Portfolio\Http\Controllers\ProjectTypeController@edit'));
        Route::put(     'project-types/{id}',                       array('as' => 'projectTypes.edit.process',                          'uses' => '\Ixudra\Portfolio\Http\Controllers\ProjectTypeController@update'));
        Route::delete(  'project-types/{id}',                       array('as' => 'projectTypes.delete',                                'uses' => '\Ixudra\Portfolio\Http\Controllers\ProjectTypeController@destroy'));
        Route::get(     'project-types/filter',                     array('as' => 'projectTypes.filter',                                'uses' => '\Ixudra\Portfolio\Http\Controllers\ProjectTypeController@filter'));
        Route::post(    'project-types/filter',                     array('as' => 'projectTypes.filter.process',                        'uses' => '\Ixudra\Portfolio\Http\Controllers\ProjectTypeController@filter'));

        Route::get(     'addresses',                                array('as' => 'addresses.index',                                    'uses' => '\Ixudra\Portfolio\Http\Controllers\AddressController@index'));
        Route::post(    'addresses',                                array('as' => 'addresses.index.process',                            'uses' => '\Ixudra\Portfolio\Http\Controllers\AddressController@index'));
        Route::get(     'addresses/create',                         array('as' => 'addresses.create',                                   'uses' => '\Ixudra\Portfolio\Http\Controllers\AddressController@create'));
        Route::post(    'addresses',                                array('as' => 'addresses.store',                                    'uses' => '\Ixudra\Portfolio\Http\Controllers\AddressController@store'));
        Route::get(     'addresses/{id}',                           array('as' => 'addresses.show',                                     'uses' => '\Ixudra\Portfolio\Http\Controllers\AddressController@show'));
        Route::get(     'addresses/{id}/edit',                      array('as' => 'addresses.edit',                                     'uses' => '\Ixudra\Portfolio\Http\Controllers\AddressController@edit'));
        Route::put(     'addresses/{id}',                           array('as' => 'addresses.edit.process',                             'uses' => '\Ixudra\Portfolio\Http\Controllers\AddressController@update'));
        Route::delete(  'addresses/{id}',                           array('as' => 'addresses.delete',                                   'uses' => '\Ixudra\Portfolio\Http\Controllers\AddressController@destroy'));
        Route::get(     'addresses/filter',                         array('as' => 'addresses.filter',                                   'uses' => '\Ixudra\Portfolio\Http\Controllers\AddressController@filter'));
        Route::post(    'addresses/filter',                         array('as' => 'addresses.filter.process',                           'uses' => '\Ixudra\Portfolio\Http\Controllers\AddressController@filter'));

        Route::get(     'people',                                   array('as' => 'people.index',                                       'uses' => '\Ixudra\Portfolio\Http\Controllers\PeopleController@index'));
        Route::post(    'people',                                   array('as' => 'people.index.process',                               'uses' => '\Ixudra\Portfolio\Http\Controllers\PeopleController@index'));
        Route::get(     'people/create',                            array('as' => 'people.create',                                      'uses' => '\Ixudra\Portfolio\Http\Controllers\PeopleController@create'));
        Route::post(    'people',                                   array('as' => 'people.store',                                       'uses' => '\Ixudra\Portfolio\Http\Controllers\PeopleController@store'));
        Route::get(     'people/{id}',                              array('as' => 'people.show',                                        'uses' => '\Ixudra\Portfolio\Http\Controllers\PeopleController@show'));
        Route::get(     'people/{id}/edit',                         array('as' => 'people.edit',                                        'uses' => '\Ixudra\Portfolio\Http\Controllers\PeopleController@edit'));
        Route::put(     'people/{id}',                              array('as' => 'people.edit.process',                                'uses' => '\Ixudra\Portfolio\Http\Controllers\PeopleController@update'));
        Route::delete(  'people/{id}',                              array('as' => 'people.delete',                                      'uses' => '\Ixudra\Portfolio\Http\Controllers\PeopleController@destroy'));
        Route::get(     'people/filter',                            array('as' => 'people.filter',                                      'uses' => '\Ixudra\Portfolio\Http\Controllers\PersonController@filter'));
        Route::post(    'people/filter',                            array('as' => 'people.filter.process',                              'uses' => '\Ixudra\Portfolio\Http\Controllers\PersonController@filter'));

        Route::get(     'companies',                                array('as' => 'companies.index',                                    'uses' => '\Ixudra\Portfolio\Http\Controllers\CompanyController@index'));
        Route::post(    'companies',                                array('as' => 'companies.index.process',                            'uses' => '\Ixudra\Portfolio\Http\Controllers\CompanyController@index'));
        Route::get(     'companies/create',                         array('as' => 'companies.create',                                   'uses' => '\Ixudra\Portfolio\Http\Controllers\CompanyController@create'));
        Route::post(    'companies',                                array('as' => 'companies.store',                                    'uses' => '\Ixudra\Portfolio\Http\Controllers\CompanyController@store'));
        Route::get(     'companies/{id}',                           array('as' => 'companies.show',                                     'uses' => '\Ixudra\Portfolio\Http\Controllers\CompanyController@show'));
        Route::get(     'companies/{id}/edit',                      array('as' => 'companies.edit',                                     'uses' => '\Ixudra\Portfolio\Http\Controllers\CompanyController@edit'));
        Route::put(     'companies/{id}',                           array('as' => 'companies.edit.process',                             'uses' => '\Ixudra\Portfolio\Http\Controllers\CompanyController@update'));
        Route::delete(  'companies/{id}',                           array('as' => 'companies.delete',                                   'uses' => '\Ixudra\Portfolio\Http\Controllers\CompanyController@destroy'));
        Route::get(     'companies/filter',                         array('as' => 'companies.filter',                                   'uses' => '\Ixudra\Portfolio\Http\Controllers\CompanyController@filter'));
        Route::post(    'companies/filter',                         array('as' => 'companies.filter.process',                           'uses' => '\Ixudra\Portfolio\Http\Controllers\CompanyController@filter'));
    });

在正常安装中,只有属于CustomerControllerProjectControllerProjectTypeController的路由必须注册。所有其他资源都通过这些路由使用和访问。但是,如果需要,您也可以添加它们。

AppServiceProviderregister()方法中注册模型观察者

    /**
     * Model observers
     */

    \Ixudra\Portfolio\Models\Company::observe( new \Ixudra\Portfolio\Observers\CustomerModelObserver() );
    \Ixudra\Portfolio\Models\Person::observe( new \Ixudra\Portfolio\Observers\CustomerModelObserver() );

使用

一旦包含所有依赖项并运行了迁移,您就可以开始使用此包。默认情况下,该包为您提供了两个资源控制器(ProjectControllerCustomerController),您可以访问它们。这些控制器提供的路由通过包服务提供者自动包含,并且可以默认访问。如果需要,您可以使用以下示例来创建指向这些控制器提供的索引页面的链接

    // Controller is accessible via the url http://yourAppName/customers
    <li>{!! HTML::linkRoute('customers.index', Translate::recursive('portfolio::admin.menu.title.index', array('model' => 'customer'))) !!}</li>

    // Controller is accessible via the url http://yourAppName/projects
    <li>{!! HTML::linkRoute('projects.index', Translate::recursive('portfolio::admin.menu.title.index', array('model' => 'project'))) !!}</li>

    // Controller is accessible via the url http://yourAppName/projectTypes
    <li>{!! HTML::linkRoute('projectTypes.index', Translate::recursive('portfolio::admin.menu.title.index', array('model' => 'projectType'))) !!}</li>

扩展包

即将推出!

支持

通过Patreon支持我进一步开发和维护此包!!

许可证

此包是开源软件,根据MIT许可证授权

联系

有关包的问题、错误、建议和/或功能请求,请使用Github问题系统,或提交拉取请求。提交问题时,请始终提供关于您问题的详细说明、任何响应或反馈、可能相关的日志消息以及演示问题的源代码示例。否则,我可能无法帮助您解决问题。请在提交问题或拉取请求之前查看贡献指南

对于任何其他问题,请随时使用以下凭证

Jan Oris(开发者)