Symfony のライブテンプレート
ライブテンプレートは、対応するテンプレート名を入力すると PhpStorm が自動的に挿入する、頻繁に使用されるコード構造のコードスニペットです。Symfony ライブテンプレートのリファレンスには、PhpStorm の Symfony コンポーネントのライブテンプレートの完全なリストが含まれています。
PhpStorm にコードスニペットを挿入させるには、ライブテンプレート名 (コード補完の提案では、テンプレートは でマークされています) を入力し、Tab を押します。挿入されたテンプレート内のある変数から別の変数に移動するには、Tab と Shift+Tab を押します。
![Adding Symfony live templates](https://resources.jetbrains.com/help/img/idea/2024.1/add_symfony_live_templates.png)
IDE の事前設定された Symfony ライブテンプレートを編集するか、カスタムテンプレートを作成するには、設定 (Ctrl+Alt+S) | エディター | ライブテンプレートに移動し、symfony ノードを展開します。
![Symfony ライブテンプレートの設定 Symfony live templates settings](https://resources.jetbrains.com/help/img/idea/2024.1/symfony_live_templates_settigs.png)
Symfony ライブテンプレートのリファレンス
テンプレート名 | テンプレートテキスト |
---|---|
404unless
|
if ($CONDITION$) { throw $this->createNotFoundException($MESSAGE$); }
|
action
|
#[Route(path: '/$PATH$', name: '$ROUTE_NAME$')]
public function $NAME$Action() {
$END$
}
|
add
|
->add('$FIELD$', $CLASSNAME$::class)
|
addflash
|
$this->addFlash('$TYPE$','$MESSAGE$');
|
choice
|
#[Assert\Choice(choices: ['$CHOICE$'])]
|
column
|
#[ORM\Column(name: '$NAME$', type: '$TYPE$', length: $LENGTH$)]
|
command
|
namespace $NAMESPACE$;
use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
#[AsCommand(name: '$COMMANDNAME$', description: '$DESCRIPTION$')]
class $CLASSNAME$ extends Command {
protected function configure(): void {
$TODO$
}
protected function execute(InputInterface $input, OutputInterface $output): int {
return Command::SUCCESS;
}
}
|
controller
|
namespace $NAMESPACE$;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
class $CLASSNAME$ extends AbstractController {
#[Route(path: '/$PATH$', name: '$NAME$')]
public function someAction($name) {
$END$
}
}
|
createquery
|
$this->getEntityManager()
->createQuery('SELECT $ALIAS$ FROM $ENTITY$ $ALIAS$ WHERE $ALIAS$.$PROPERTY$ = :$PARAMETER$')
->setParameter('$PARAMETER$', $ARGUMENT$)
->execute();
|
discriminatorcolumn
|
#[ORM\DiscriminatorColumn(name: '$NAME$', type: '$TYPE$')]
|
discriminatormap
|
#[ORM\DiscriminatorMap(['$VALUE$' => $CLASSNAME$::class])]
|
doctrinecolumn
|
/** @var $PHPTYPE$ */
#[ORM\Column(name: '$FIELDNAME$', type: '$TYPE$')]
private $$$PROPERTYNAME$;
|
email
|
#[Assert\Email(message: '$MESSAGE$')]
|
embeddable
|
#[ORM\Embeddable]
|
embedded
|
#[ORM\Embedded(columnPrefix: '$PREFIX$', class: $ENTITY$::class)]
|
entity
|
namespace $NAMESPACE$;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Entity]
#[ORM\Table(name: '$NAME$')]
class $CLASSNAME$ { #[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column(type: 'int')]
private int $id = 0; public function getId(): int { return $this->id; } }
|
entityattribute
|
#[ORM\Entity(repositoryClass: $REPOSITORY$::class)]
|
formbuilder
|
$formBuilder = $this->createFormBuilder();
return $formBuilder
->add('$FIELD$', $CLASSNAME$::class)$END$;
|
formhandle
|
$form = $this->createForm($CLASSNAME$::class); $form->handleRequest($REQUEST$); if ($form->isSubmitted() && $form->isValid()) {
$END$
}
|
getem
|
$EM$ = $this->getDoctrine()->getManager();
|
getrepo
|
$EM$->getRepository('$ENTITY$');
|
groups
|
#[Groups(groups: ['$GROUP$'])]
|
id
|
#[ORM\Id]
|
ignore
|
#[Ignore]
|
index
|
#[ORM\Index(name: '$NAME$', columns: [$COLUMNS$])]
|
joincolumn
|
#[ORM\JoinColumn(name: '$NAME$', referencedColumnName: '$REFERENCE$', onDelete: '$DELETE$')]
|
jointable
|
#[ORM\JoinTable(name: '$NAME$')]
|
length
|
#[Assert\Length(min: $MIN$, max: $MAX$)]
|
manytomany
|
#[ORM\ManyToMany(targetEntity: '$TARGET$')]
|
manytoone
|
#[ORM\ManyToOne(targetEntity: '$TARGET$')]
|
notBlank
|
#[Assert\NotBlank(allowNull: $ALLOWNULL$)]
|
notNull
|
#[Assert\NotNull]
|
onetomany
|
#[ORM\OneToMany(targetEntity: '$TARGET$')]
|
onetoone
|
#[ORM\OneToOne(targetEntity: '$TARGET$')]
|
persistflush
|
$EM$->persist($ENTITY$);
$EM2$->flush();
|
querybuilder
|
$QB$ = $this->createQueryBuilder('p')
->where('p.$PROPERTY$ = :$PARAMETER$')
->setParameter('$PARAM$', $ARGUMENT$)
->getQuery();
|
redirect
|
return $this->redirect('$URL$');
|
removeflush
|
$EM$->remove($ENTITY$);
$EM2$->flush();
|
rendertwig
|
return $this->render('$TEMPLATE$.html.twig', [
$VAL$
]);
|
repofind
|
$VAR$ = $this->getDoctrine()
->getRepository('$REPO$')
->$METHOD$($ARG$);
|
required
|
#[Required]
|
route
|
#[Route(path: '/$PATH$', name: '$NAME$', methods: ['$METHOD$'])]
|
serializedName
|
#[SerializedName(serializedName: '$NAME$')]
|
table
|
#[ORM\Table(name: '$NAME$')]
|
type
|
#[Assert\Type(type: '$TYPE$')]
|
uniqueEntity
|
#[UniqueEntity(fields: ['$FIELD$'])]
|
uniqueconstraint
|
#[ORM\UniqueConstraint(name: '$NAME$', columns: [$COLUMNS$])]
|
valid
|
#[Assert\Valid]
|
関連ページ:
![](https://pleiades.io/icons/phpstorm.png)
ライブテンプレート
ライブテンプレートを使用して、ループ、条件、宣言、print ステートメントなどの一般的な構造をコードに挿入します。コードスニペットを展開するには、対応するテンプレートの省略形を入力してを押します。を押し続けると、テンプレート内の 1 つの変数から次の変数に移動します。を押して、前の変数に移動します。ライブテンプレートの種類:次のタイプのライブテンプレートが区別されます。シンプルなテンプレートには固定プレーンテキストのみが含まれています。シンプルなテンプレートを展開すると、テキストが自動
![](https://resources.jetbrains.com/help/img/idea/2024.1/ps_live_template_variables_table.png)
ライブテンプレート変数
ライブテンプレートの略語を展開すると、その変数は値を入力できる入力フィールドとして表示されるか、値に置き換えられます。これらは、変更可能なデフォルト値または関数を使用して計算された値です。テンプレート内で変数を宣言するには、次の形式を使用します: 式では、ドル文字を開閉せずに変数名を使用します(例:)。式を使用して各変数を定義し、式が評価に失敗した場合のデフォルト値を提供します。この式には、次の構成が含まれる場合があります。二重引用符で囲まれた文字列定数、ライブテンプレートで定義されている他の変数...
![](https://resources.jetbrains.com/help/img/idea/2024.1/ps_live_template_settings_page.png)
チュートリアル: ライブテンプレートの作成
PHP アプリケーションを開発する場合、よく繰り返されるタスクは、コントローラークラスとその中にアクションを作成することです。このチュートリアルでは、これを自動化するためのライブテンプレートを作成する方法について説明します。コントローラークラスのライブテンプレートを作成する:コントローラークラスから始めましょう。コントローラークラスは、通常、のように名前が付けられ、基本的なクラスを拡張します。設定ダイアログで、を選択します。をクリックして新しいライブテンプレートを作成します。このテンプレートに...
![](https://resources.jetbrains.com/help/img/idea/2024.1/ps_symfony_create_helper_function_route_completion.png)
ヘルパー関数の作成
Symfony のサポートプラグインは、Symfony クラスと関数での使用に基づいて、パラメーター型と戻り値の型の推論を提供する: これにより、テンプレート、サービス、エンティティ、翻訳、ルート、フォーム、またはイベントを受け取ったり返したりする独自のヘルパー関数を作成できます。例として、コントローラーで使用できる関数を作成しましょう。この関数は、クラスのと関数を組み合わせることで、アプリケーション内の既知のルートにユーザを簡単にリダイレクトすることができます。コードは次のようになります。pr...
![](https://resources.jetbrains.com/help/img/idea/2024.1/ps_symfony_code_style_settings.png)
symfony コードスタイル
PhpStorm は、Symfony 開発用に調整された組み込みの Symfony2 コードスタイルを提供します。Symfony2 のコードスタイルを設定する設定ダイアログ () で、に移動します。右上隅の選択して設定リンクをクリックして、ポップアップメニューから Symfony2 オプションを選択します。symfony コーディング標準に対するコードの確認:PhpStorm では、PHP_CodeSniffer ツールを使用して、コーディング標準の問題を検出し、PHP_CodeSniffer に S...