129 / 14 / 6
Регистрация: 05.08.2013
Сообщений: 285
1

Symfony2, работа с типом Collection, работа с базовой формой

18.11.2014, 15:49. Показов 1434. Ответов 2
Метки нет (Все метки)

Здравствуйте.
Осваиваю создание CRUD приложения на Symfony 2, на примере.
Однако, возникают ошибки:
1)При модификации шаблона изменения новости:
Symfony2, работа с типом Collection, работа с базовой формой

должно получиться так:
Symfony2, работа с типом Collection, работа с базовой формой

но у меня осталась кнопка create:
Symfony2, работа с типом Collection, работа с базовой формой

Примечание:Этот рисунок содержит больше элементов, чем в примере т.к. это конечный вариант задания, я не стал откатывать до момента изменения формы редактирования.
2)При добавлении типа collection:
PHP
1
2
3
4
5
6
7
8
9
$builder->add('title', 'text', array('label' => 'Заголовок'))
                ....
              ->add('newsLinks', 'collection', array(
                                               'label' => 'Ссылки к новости',
                                               'type' => new NewsLinkType(),
                                               'allow_add' => true,
                                               'allow_delete' => true,
                                               'prototype' => true
                                              ));
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
namespace Test\NewsBundle\Form;
 
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;
 
class NewsLinkType extends AbstractType
{
    public function buildForm(FormBuilder $builder, array $options)
    {
        $builder->add('url')
                ->add('text');
    }
 
    public function getName()
    {
        return 'newsLinkType';
    }
 
 
    public function getDefaultOptions(array $options)
    {
        return array(
            'data_class' => 'Test\NewsBundle\Entity\NewsLink',
        );
    }
}
Javascript
1
2
<!-- При нажатии на кнопку #addLink он добавляется к таблице -->
   <script type="text/html" id="nl">{{ _self.linkRow (form.newsLinks.get('prototype')) }}  </script>
У меня возникает такая ошибка:
Symfony2, работа с типом Collection, работа с базовой формой

Как я понимаю, почему-то не находит метод get.
Пробовал
Javascript
1
<script type="text/html" id="nl">{{ _self.linkRow (form.newsLinks.vars.prototype) }}  </script>
Такая же ошибка.
Посмотрел здесь, вроде все правильно, только немного по другому, т.к. свои задачи.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.11.2014, 15:49
Ответы с готовыми решениями:

Описать свойство класса с типом Collection и соответствующие Property методы
Описать свойство класса с типом Collection и соответствующие Property методы Ребят нужна...

Работа с формой
Подскажите можно ли менять местами формы, в Visual studia 2010? Т.е. у меня есть 10 форм, я хочу...

Работа с формой
Коллеги, день добрый. Помогите разобраться. Вопрос 1. В результате отработки ниже...

Работа с формой
Что нужно сделать,чтоб когда при выполнении работы на форме поверх неё открывалось окно,а потом...

2
129 / 14 / 6
Регистрация: 05.08.2013
Сообщений: 285
26.11.2014, 01:20  [ТС] 2
Ответ на то, как заменить название submit'а, я нашел:
Ниже, шаблон twig, отнесу его к html коду:
HTML5
1
2
3
4
5
6
7
{{ form_start(form) }}
         {% extends '::base.html.twig' %}
 
        {# .....какие то иные элементы формы #}
        {# переопределение элементов формы #}
        {{ form_widget(form.submit, { 'label': 'Создать тест','attr': {'class': 'createTest'} }) }}
    {{ form_end(form) }}
Выше присваиваю label, для сущности submit, которая наследуется из base.html.twig
Также, можно поменять в классе для управления формой, который предварительно генерируется doctrine вместе с базовыми элементами формы для взаимодействия с БД, командой:
Bash
1
php app/console doctrine:generate:crud --entity=YourNameBundle:NewsLink --route-prefix=link_to_your_app --with-write --format=annotation
Что-то вроде этого:
PHP
1
2
3
4
5
6
7
8
9
10
/**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('submit', null, array('label' => 'Создать'));
            
     };
Но не получилось...странно
Более подробно написано в этом разделе
На второй вопрос пока не нашел ответ.
0
35 / 35 / 3
Регистрация: 27.10.2014
Сообщений: 120
29.11.2014, 23:41 3
метод Get надо в роутинге прописать для данного экшена.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.11.2014, 23:41

Работа с формой в С#
Помогите пожалуйста еще с таким вопросом.У нас есть форма,вот ее принтскрин. Когда мы вводим...

Работа с формой
Есть запрос из которого берутся данные для записи в форму.Как сделать так чтобы при выборе...

Работа JS с формой
Здравствуйте. Плохо разбираюсь в JS, но сделать надо на JS. Задача проста. Есть форма, надо чтобы...

Работа с формой JS
Добрый день! Есть следующая проблема: на сайте (чужом) есть форма работающая на JS. То есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.