ユーザーの管理にFOSUserBundleを使用しています。ユーザーを登録するために、自分のニーズを満たすバンドルのフォームを再利用しました。それでも、フィールドの属性をいくつか設定する必要がありました。これは、twigによって次のように簡単に実行されました。
{{ form_widget(form.username, { 'attr': {'class': "span12",
'placeholder': "Username"} }) }}
今、私の目標は私のプレースホルダーで自動翻訳をすることなので、このコードを提案しました:
{{ form_widget(form.username, { 'attr': {'class': "span12",
'placeholder': "{{'security.login.usernameplaceholder'|trans}}"} }) }}
この前のコードは、プレースホルダー値が{{'security.login.usernameplaceholder' | trans}}に等しい入力を生成しました
この問題を取り除くために、変数を設定しようとしましたが、symfonyはエラーを生成しました!!!
{% set usernameplaceholder = {{'security.login.usernameplaceholder'|trans}} %}
{{ form_widget(form.username, { 'attr': {'class': "span12",
'placeholder': usernameplaceholder} }) }}
この問題を解決する提案はありますか?
おかげで、
Twigでは、{{
を{{
内に配置しないでください({%
と同じ)。これをphpタグと考えてください。
以下はうまくいくはずです
{% set usernameplaceholder = 'security.login.usernameplaceholder'|trans %}
{{ form_widget(form.username, { 'attr': {'class': "span12",
'placeholder': usernameplaceholder} }) }}
OR
{{ form_widget(form.username, { 'attr': {'class': "span12",
'placeholder': 'security.login.usernameplaceholder'|trans} }) }}
プレースホルダー(または任意の属性を追加する)を追加する別の方法は、options-array$builder
の形式に、キーと値のペアとして属性を持つ別のArray attr
を含めます。
// The parameters are column name, form-type and options-array respectively.
$builder->add('field', null, array(
'attr' => array(
'placeholder' => 'support.contact.titleplaceholder'
)
));
次のようにフォーム定義に追加することもできます。
$builder
->add('information', 'textarea', array(
'label' => false,
'required' => true,
'constraints' => [
new NotBlank()
],
'placeholder' => 'support.contact.titleplaceholder',
));
この方法でも(symfony4を使用して)twigで翻訳できます。
{'attr':{'placeholder': "Text to translate"}}
HTMLのプレースホルダーは次のように記述されるため、次のように翻訳できます。
<input placeholder="{{"Text to translate"|trans }}">