View difference between Paste ID: d9G0k77p and jrJqxjsK
SHOW: | | - or go back to the newest paste.
1
{# builder #}
2
$builder->add(
3
            'companyphones',
4
            'collection',
5
            array(
6
                'type'           => new CompanyPhoneType(),
7
                'allow_add'      => true,
8
                'allow_delete'   => true,
9
                'prototype'      => true,
10
                'prototype_name' => 'phone'
11
            )
12
        );
13
14
{# scheme #}
15
  <table name="company_phone">
16
    <column name="id" type="Integer" required="true" autoIncrement="true" primaryKey="true"/>
17
    <column name="company_phone_type_id" type="Integer" required="true"/>
18
    <column name="company_id" type="Integer"/>
19
    <column name="company_contact_id" type="Integer"/>
20
    <column name="number" type="Varchar" size="30" required="true"/>
21
    <foreign-key foreignTable="company">
22
      <reference foreign="id" local="company_id"/>
23
    </foreign-key>
24
    <foreign-key foreignTable="company_contact">
25
      <reference foreign="id" local="company_contact_id"/>
26
    </foreign-key>
27
    <foreign-key foreignTable="company_phone_type">
28
      <reference foreign="id" local="company_phone_type_id"/>
29
    </foreign-key>
30
  </table>
31
  <table name="company_phone_type">
32
    <column name="id" type="Integer" required="true" autoIncrement="true" primaryKey="true"/>
33
    <column name="description" type="Varchar" size="100" required="true"/>
34
  </table>
35
 <table name="company_contact">
36
    <column name="id" type="Integer" required="true" autoIncrement="true" primaryKey="true"/>
37
    <column name="company_id" type="Integer" required="true"/>
38
    <column name="first_name" type="Varchar" size="100" required="true"/>
39
    <column name="preposition" type="Varchar" size="20"/>
40
    <column name="surname" type="Varchar" size="100" required="true"/>
41
    <column name="initials" type="Varchar" size="10"/>
42
    <column name="phone_number" type="Varchar" size="30" required="true"/>
43
    <column name="email_address" type="Varchar"/>
44
    <column name="title" type="Varchar" size="100"/>
45
    <column name="position" type="Varchar" size="100"/>
46
    <column name="branche" type="Varchar" size="100"/>
47
    <column name="employed" type="Boolean" default="true" required="true"/>
48
    <column name="active" type="Boolean" default="true" required="true"/>
49
    <foreign-key foreignTable="company">
50
      <reference foreign="id" local="company_id"/>
51
    </foreign-key>
52
    <behavior name="timestampable"/>
53
  </table>
54
55
56
{# form code #}
57
58
          <div id="contact_phonenumbers"
59
               data-prototype="{{ _self.widget_prototype(form.companyphones, 'Remove')|escape }}">
60
            {% for widget in form.companyphones.children %}
61
              {{ _self.widget_prototype(widget, 'Remove') }}
62
            {% endfor %}
63
          </div>
64
65
          <a class="btn-add" data-target="contact_phonenumbers">Add phone</a>
66
67
{# form add js #}
68
        .on('click', '.btn-add', function (event) {
69
          var collectionHolder = $('#' + $(this).attr('data-target'));
70
          var prototype = collectionHolder.attr('data-prototype');
71
          var form = prototype.replace(/__name__/g, collectionHolder.children().length);
72
73
          collectionHolder.append(form);
74
75
          return false;
76-
        })
76+
        })
77
78
{# companyPhonyType #}
79
<?php
80
81
namespace Axtion\CompanyBundle\Form\Type;
82
83
use Propel\PropelBundle\Form\BaseAbstractType;
84
use Symfony\Component\Form\FormBuilderInterface;
85
86
class CompanyPhoneType extends BaseAbstractType
87
{
88
    protected $options = array(
89
        'data_class' => 'Axtion\CompanyBundle\Model\CompanyPhone',
90
        'name'       => 'companyphone',
91
    );
92
93
    /**
94
     * {@inheritdoc}
95
     */
96
    public function buildForm(FormBuilderInterface $builder, array $options)
97
    {
98
        $builder->add('number');
99
        $builder->add(
100
            'companyPhoneTypeId',
101
            'axtion_jqueryselect2_model',
102
            array('class' => '\Axtion\CompanyBundle\Model\CompanyPhoneType', 'property' => 'description')
103
        );
104
    }
105
}