드루팔 종자 데이터

7078 단어 phpdeupalprogramming
시드 데이터
시드를 사용하여 조회 목록에 대한 초기 값을 제공합니다.
데모 목적, 개념 증명 및 물론 개발용.

module\custom\my_module\src에 SeedData라는 디렉터리를 추가합니다. 우리는 파일을 추가합니다
module\custom\offer\src\SeedData에 SeedDataGenerator.php라고 합니다.
이 클래스는 이제 더미 사용자를 생성합니다.

<?php

namespace Drupal\my_module\SeedData;

use Drupal\user\Entity\User;
use Drush\Drush;

/**
 * SeedDataGenerator.
 *
 * @package Drupal\my_module
 */
class SeedDataGenerator {

  /**
   * Function to create a seed data.
   *
   * @param string $entity
   *   The type of entity that needs to be created.
   *
   * @return null|int
   *   The number of entities created.
   */
  public function generate(string $entity){
    $count = 0;
    switch ($entity) {
      case 'user':
        $count = $this->seedUser();
        break;
    }
    return $count;
  }

  /**
   * @return int
   *   The number of users created.
   * @throws \Drupal\Core\Entity\EntityStorageException
   */
  private function seedUser() {
    $count = 0;

    $user = User::create();
    $user->setUsername('testUser');
    $user->setPassword('P@ssw0rd');
    $user->activate();
    $user->enforceIsNew();
    Drush::output()->writeln('<comment>Creating user test</comment>' );
    if ($user->save()) {
      $count++;
    }
    return $count;
  }
}



클래스를 트리거할 drush 명령을 계속 추가합니다.
custom/my_module/src/Commands/SeedGeneratorCommand.php 추가 및 구성
더 나아가. 최종 파일은 다음과 같습니다.

<?php

namespace Drupal\my_module\Commands;

use Drupal\my_module\SeedData\SeedDataGenerator;
use Drush\Commands\DrushCommands;
use Drush\Drush;

/**
 * Class SeedGeneratorCommand.
 *
 * @package Drupal\my_module\Commands
 */
class SeedGeneratorCommand extends DrushCommands {

  /**
   * Runs the mymoduleCreateSeeds command.
   *
   * @command mymodule-create-seeds
   * @aliases mymodulecs
   * @usage drush mymodule-create-seeds
   * Display 'Seed data created'
   */
  public function mymoduleCreateSeeds():void {
    $seed = new SeedDataGenerator();
    $count = $seed->generate('user');
    Drush::output()->writeln('<info>'. $count . ' user(s) created</info>' );
  }

}



하나 더. 파일 custom/my_module/my_module.services.yml을 추가하고 다음을 추가합니다.

services:
  offer.commands:
    class: Drupal\offer\Commands\SeedGeneratorCommand
    tags:
      - { name: drush.command }


그게 다야! 캐시를 지우고 시스템이 명령을 등록했는지 확인하십시오.

$drush offer-create-seeds


참조:
  • Learning drupal 9 as a framework
  • 좋은 웹페이지 즐겨찾기