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 | } |