0

私は EasyAdminBundle と Symfony 3.0 を使用しており、デフォルトでテキストフィールドである「ステータス」フィールドがあり、それを選択タイプにしたいのですが、javascript を使用して変更イベントで他のフィールドを表示または非表示にすることができます。問題は、フィールドがレンダリングされることですが、オプションを変更してもフィールドが非表示にならないことです。また、symfony のドキュメントが十分に明確ではなく、私にとっては、それらのアプローチが機能していないため、私のアプローチが適切かどうかもわかりません。

したがって、コードは次のようになります

MyBundle/Controller/AdminController

public function createEditForm($entity, array $entityProperties)
{
    $editForm = parent::createEditForm($entity, $entityProperties);

    if($entity instanceof Employee){
        $editForm->remove('status');
        $editForm->add('status', ChoiceType::class, array(
            'choices' => array(
                'Working' => "active",
                'Not working' => 'inactive'
            )
        ));
    }
    return $editForm;
}

public function createNewForm($entity, array $entityProperties)
{
    $newForm = parent::createNewForm($entity, $entityProperties);

    if($entity instanceof Employee){
        $newForm->remove('status');
        $newForm->add('status', ChoiceType::class, array(
            'choices' => array(
                'Choose an option' => null,
                'Working' => true,
                'Not working' => false
            )
        ));
    }
    return $newForm;
}

MyBundle/Resources/views/Form/employeestatusfield.html.twig

{% extends 'EasyAdminBundle:default:new.html.twig' %}
{% form_theme form 'EmployeeBundle:Form:employeestatusfield.html.twig' %}

{% block _employee_status_widget %}
        <script type="text/javascript">
            alert('tiiw');
            $(document).ready(function () {
                toggleFields(); 
                $("#employee_status").change(function () {
                    toggleFields();
                });
            });
            function toggleFields() {
                if ($("#employee_status").valueOf() == 1) {
                    $("#employee_quitAt").hide();
                }
                else
                    $("#employee_quitAt").show();
            }
        </script>
{% endblock %}

ご協力ありがとうございました。

4

0 に答える 0