Skip to content

Blog Công Nghệ

MENUMENU
  • Trang chủ
  • Giới Thiệu
  • Lập Trình
    • Lập Trình Website
      • Laravel
        • Phân Tích Dự Án
      • PHP
      • SQL
      • HTML
      • CSS
      • Javascipt
      • My Project
      • Wordpress
    • Luyện Skill
    • Lập trình winform
    • CSDL
    • Lập Trình Android
    • Trí tuệ nhân tạo
    • Khai Khoáng Dữ Liệu
    • Arduino
    • Khác
    • Đồ án
  • Phần Mềm
    • Powerpoint
    • Tool
  • Cuộc sống và Giải trí
    • Hợp âm
    • web5ngay - youtube
    • Công Giáo
    • Kỹ Năng Sống
    • Street Workout
  • Danh sách bài viết
  • Guide line
    • Guild line phỏng vấn
    • Guide lines Laravel
    • Guide line Module Frontend
  • Tóm tắt sách
  • Fanpage

Blog Công Nghệ

Nơi chia sẻ kiến thức

Tạo Package trong Laravel

19 Tháng Mười Một, 2023 by admin
Lượt xem: 14

Contents

  • 1. Khởi tạo package và route
  • 2. Tạo controllers cho package
  • 3. Tạo migration cho package
  • 4. Tạo Models trong package
  • 5. Lưu ý

1. Khởi tạo package và route

Tạo folder packages tại folder gốc, trong folder packages tạo folder feature cần làm (ở đây mình ví dụ translate-tool).

Mở terminal ở folder translate-tool và chạy lệnh composer init

Package name: haodt/translate-tool
Description: Translate vuejs text japan
Author: enter
Minimun stability: dev
Pakage Type: libarary
Would you like: no
Would you like: no
Add PSR-4: enter
Do you confirm: yes

Create folder Provides trong folder src và file TranslateServiceProvider.php

<?php

namespace TranslateTool\Providers;

use Illuminate\Support\ServiceProvider;

class TranslateServiceProvider extends ServiceProvider {
    /**
    * Bootstrap the application services.
    *
    * @return void
    */
    public function boot()
    {
        $this->loadRoutesFrom(__DIR__.'/../routes/web.php');
    }

    /**
    * Register the application services.
    *
    * @return void
    */
    public function register()
    {
    //
    }
}

Create folder routes trong folder src và file web.php

<?php
Route::get('/abc', function () {
    return 'abc';
});

Chỉnh sửa file composer.json trong folder packages/translate-tool  (dòng 8 tôi xóa đi HaoDT – bạn có thể giữ lại nhé)

{
    "name": "haodt/translate-tool",
    "description": "translate vuejs text japan",
    "type": "library",
    "license": "MIT",
    "autoload": {
        "psr-4": {
            "TranslateTool\\": "src/"
        }
    },
    "authors": [
        {
            "name": "HaoDT",
            "email": "tronghaomaico@gmail.com"
        }
    ],
    "minimum-stability": "dev",
    "require": {}
}

Chỉnh sửa file composer.json trong folder root.

// => autoload dev thêm TranslateTool như ở file composer.json trong package,
// nhưng value là đường dẫn từ folder root đến src
"autoload-dev": {
        "psr-4": {
            "Tests\\": "tests/",
            "TranslateTool\\": "packages/translate-tool/src/"
        }
},

Đăng ký trong config/app.config

...
		/*
         * Application Service Providers...
         */
        App\Providers\AppServiceProvider::class,
        App\Providers\AuthServiceProvider::class,
        // App\Providers\BroadcastServiceProvider::class,
        App\Providers\EventServiceProvider::class,
        App\Providers\RouteServiceProvider::class,
        TranslateTool\Providers\TranslateServiceProvider::class,

    ],

Run command ở root folder

composer dump-autoload

Xong rồi, test thử thôi. Bạn start server lên.

php artisan serve
  
// sau đó vào đường dẫn
http://127.0.0.1:8000/abc
// xem có ra text abc không nhé, nếu ra là ok rồi đó.

2. Tạo controllers cho package

Trong folder src tạo folder Http/Controllers và tạo file TranslateToolController.php

<?php

namespace TranslateTool\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class TranslateToolController extends Controller
{
    public function index() {
        return 'abc';
    }
}

Chỉnh sửa lại file routes/web.php

<?php
Route::group(['namespace' => 'TranslateTool\Http\Controllers'], function() {
    Route::get('/abc', 'TranslateToolController@index');
});

3. Tạo migration cho package

Tạo folder database/migrations và tạo file migration như bình thường.

add $this->loadMigrationsFrom(__DIR__.’/../database/migrations’);   vào  Prividers/TranslateServiceProvider

<?php

namespace TranslateTool\Providers;

use Illuminate\Support\ServiceProvider;

class TranslateServiceProvider extends ServiceProvider {
    /**
    * Bootstrap the application services.
    *
    * @return void
    */
    public function boot()
    {
        $this->loadRoutesFrom(__DIR__.'/../routes/web.php');
        $this->loadMigrationsFrom(__DIR__.'/../database/migrations');
    }

    /**
    * Register the application services.
    *
    * @return void
    */
    public function register()
    {
    //
    }
}

Chạy migrate bằng lệnh sau:

php artisan migrate --path=packages\translate-tool\src\database\migrations

4. Tạo Models trong package

Tạo thêm folder Models và sử dụng như bình thường.

5. Lưu ý

Khi làm việc với package, bạn lưu ý phần namespace nhé!

Related posts:

  1. Controller và View trong Laravel
  2. Validate trong laravel
  3. Thư viện Socialite trong Laravel để xử lý đăng nhập social
  4. Request trong Laravel

Post navigation

Previous Post:

Tích hợp google translate API

Next Post:

Dev với server nginx

Trả lời Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Ẩn sidebar

Tìm kiếm

Generic selectors
Exact matches only
Search in title
Search in content
Search in posts
Search in pages

Blog Công Nghệ

Bài viết mới

  • Master typescript
  • Sendmail trong Laravel sử dụng dịch vụ SES, SQS của Amazon
  • Install SSL in Nginx Ubuntu
  • Docker study
  • Bảo vệ: Hướng dẫn code bot Telegram easy game

Lượng truy cập

0074616
Visit Today : 212
Visit Yesterday : 178
This Month : 887
Who's Online : 3
© 2025 Blog Công Nghệ | WordPress Theme by Superbthemes