PhpStorm 2026.1 Help

Symfony のライブテンプレート

ライブテンプレートは、よく使われるコード構成のコードスニペットで、対応するテンプレート名を入力すると PhpStorm が自動で挿入します。 Symfony ライブテンプレートのリファレンス には、PhpStorm における Symfony コンポーネントのライブテンプレートがすべて記載されています。

PhpStorm にコードスニペットを挿入してもらうには、ライブテンプレート名(コード補完の提案では、テンプレートは でマークされています)を入力し、 Tab を押してください。 挿入されたテンプレート内のある 変数から別の変数に移動するには、 TabShift+Tab を押します。

Adding Symfony live templates

IDE の事前設定された Symfony ライブテンプレートを編集するか、カスタムテンプレートを作成するには、 設定 (Ctrl+Alt+S) | エディター | ライブテンプレート に移動し、 Symfony(シンフォニー) ノードを展開します。

Symfony ライブテンプレートの設定

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]
2026 年 5 月 22 日