私は1つのオプションフィールド(remark)を持つフォームを持っています。デフォルトでは、すべて必須フィールドです。私は 'remark'フィールドをオプションにしたいと思っていました。私は多くのソリューションを試しました。誰も働いていないようです。どうしたらいいですか?ここでSymfony 3:TextareaTypeフィールドを任意に設定する
は私のコードは
RequestItem.php
/**
* RequestItem
*
* @ORM\Table(name="request_item")
* @ORM\Entity(repositoryClass="InventoryBundle\Repository\RequestItemRepository")
*/
class RequestItem
{
/**
* @var string
*
* @ORM\Column(name="remark", type="text", nullable=true)
*/
private $remark;
RequestItemType.php
class RequestItemType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('item', EntityType::class, array(
'class' => 'InventoryBundle:Item',
'choice_label' => 'name',
'expanded' => false,
'multiple' => false,
),
array('attr' =>array('class' =>'form-control', 'style' =>'margin-bottom:15px; width:100px')))
->add('date', DateType::class, array('attr' =>array('class' =>'form-control', 'style' =>'margin-bottom:15px')))
->add('quantity', TextType::class,array('attr' =>array('class' =>'form-control', 'style' =>'margin-bottom:15px; width:75px')))
->add('client', TextType::class,array('attr' =>array('class' =>'form-control', 'style' =>'margin-bottom:15px; width:200px')))
->add('remark', TextareaType::class, array('attr' =>array('class' =>'form-control', 'style' =>'margin-bottom:15px', 'required' => false), 'empty_data' => null))
;
}
である私は、発言欄に '必要' =>偽を置きます。小枝ファイルに:
new.html.twig
{% extends 'base.html.twig' %}
{% form_theme form _self %}
{% use 'form_div_layout.html.twig' with form_label as base_form_label %}
{% block form_label %}
{{ block('base_form_label') }}
{% if required %}
<span class="required" title="This field is required" style="color:red">*</span>
{% endif %}
{% endblock %}
{% block body %}
<h1>Request Item creation</h1>
{% if is_granted("ROLE_SUPER_ADMIN") %}
{% if app.session.flashBag.has('warning') %}
<div class="alert alert-danger" role="alert">
{% for msg in app.session.flashBag.get('warning') %}
{{ msg }}
{% endfor %}
</div>
{% endif %}
{{ form_start(form) }}
{{ form_widget(form) }}
{{ form_row(form.remark, {'required': false}) }}
<input type="submit" value="Create" class="btn btn-primary" />
{{ form_end(form) }}
<hr />
<a href="{{ path('requestitem_index') }}" class="btn btn-success">Back to the list</a>
{% else %}
<h4>Please <a href="{{ path('fos_user_security_login') }}" class="btn btn-default">login</a></h4>
{% endif %}
{% endblock %}
Iは{} {form_row(偽} form.remark、{ '必要')}を加えます。
テキストエリアのフィールドが必要とされて
<div> <label for="request_item_remark" class="required">Remark</label>
<span class="required" title="This field is required" style="color:red">*</span>
<textarea id="request_item_remark" name="request_item[remark]" required="required" class="form-control" style="margin-bottom:15px" ></textarea></div>
発言フィールドのページのソースビュー。
私もそれは奇妙である
new.html.twigファイルに{% extends 'base.html.twig' %}
{% form_theme form _self %}
{% block textarea_widget %}
<div class="textarea_widget">
{% set required=required|default('not required') %}
{{ block('form_widget_simple') }}
</div>
{% endblock %}
を追加することで試してみましたが、TEXTAREAフィールドが入力テキストフィールドになり、それはまだ必要とされます。
<div> <label for="request_item_remark" class="required">Remark</label>
<span class="required" title="This field is required" style="color:red">*</span>
<div class="textarea_widget">
<input type="text" id="request_item_remark" name="request_item[remark]" required="required" class="form-control" style="margin-bottom:15px" />
</div>
テーブル構造
CREATE TABLE `request_item` (
`id` int(11) NOT NULL,
`item_id` int(11) DEFAULT NULL,
`date` date NOT NULL,
`quantity` int(11) NOT NULL,
`client` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`remark` longtext COLLATE utf8_unicode_ci
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
データベース構造体 'php app/console doctrine:schema:update --force'を更新するコマンドを試しましたか? – Noman