farmer-duck

Untitled

May 23rd, 2013
38
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. })
  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. }
Advertisement
Add Comment
Please, Sign In to add comment