still testing…

This commit is contained in:
Simon Vieille 2016-03-21 09:32:19 +01:00
parent 99e3a9a9f4
commit c18a861147
12 changed files with 135 additions and 18 deletions

1
.gitignore vendored
View file

@ -9,6 +9,7 @@
/src/CoursEndingBundle/Model/Base/ /src/CoursEndingBundle/Model/Base/
/src/CoursEndingBundle/Model/Map/ /src/CoursEndingBundle/Model/Map/
/app/phpunit.xml /app/phpunit.xml
/web/components/
/build/ /build/
/vendor/ /vendor/
/bin/ /bin/

View file

@ -84,3 +84,4 @@ fos_js_routing:
routes_to_expose: routes_to_expose:
- api_get_forms - api_get_forms
- api_get_questions - api_get_questions
- api_post_forms

View file

@ -26,7 +26,8 @@
"nelmio/api-doc-bundle": "^2.11", "nelmio/api-doc-bundle": "^2.11",
"propel/propel": "dev-master", "propel/propel": "dev-master",
"propel/propel-bundle": "2.0.x-dev", "propel/propel-bundle": "2.0.x-dev",
"friendsofsymfony/jsrouting-bundle": "^1.6" "friendsofsymfony/jsrouting-bundle": "^1.6",
"deblan/fos-rest-behavior": "dev-master"
}, },
"require-dev": { "require-dev": {
"sensio/generator-bundle": "~3.0", "sensio/generator-bundle": "~3.0",

View file

@ -6,6 +6,9 @@ use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use CoursEndingBundle\Form\Type\FormsType;
use CoursEndingBundle\Model\FormQuery;
use CoursEndingBundle\Model\FCollection;
class MainController extends Controller class MainController extends Controller
{ {
@ -16,6 +19,16 @@ class MainController extends Controller
*/ */
public function indexAction(Request $request) public function indexAction(Request $request)
{ {
return []; $forms = ['forms' => FormQuery::create()->find()];
$form = $this->createForm(FormsType::class, $forms);
if ($form->isValid()) {
die("ok");
}
return [
'form' => $form->createView(),
];
} }
} }

View file

@ -10,6 +10,8 @@ use Symfony\Component\HttpFoundation\Request;
use CoursEndingBundle\Model\FormQuery; use CoursEndingBundle\Model\FormQuery;
use CoursEndingBundle\Model\QuestionQuery; use CoursEndingBundle\Model\QuestionQuery;
use CoursEndingBundle\DataRestContainer; use CoursEndingBundle\DataRestContainer;
use CoursEndingBundle\Form\Type\FormsType;
use FOS\RestBundle\View\View;
/** /**
* @author Simon Vieille <simon@deblan.fr> * @author Simon Vieille <simon@deblan.fr>
@ -50,10 +52,20 @@ class RestController extends FOSRestController
* @Rest\View * @Rest\View
* @ApiDoc( * @ApiDoc(
* description="Je suis une description", * description="Je suis une description",
* input="RestBundle\Form\Type\FooType", * input="CoursEndingBundle\Form\Type\FormsType",
* output="RestBundle\Api\DataContainer"
* ) * )
*/ */
public function postFormsAction(Request $request)
{
$forms = ['forms' => FormQuery::create()->find()];
$form = $this->createForm(FormsType::class, $forms);
$form->handleRequest($request);
return View::create($form, 400);
}
// public function postQuestionsAction(Request $request) // public function postQuestionsAction(Request $request)
// { // {
// // $form = $this->createForm(new FooType()); // // $form = $this->createForm(new FooType());

View file

@ -57,7 +57,7 @@ class DataRestContainer
} }
} }
return -1; return 1;
} }
/** /**

View file

@ -0,0 +1,40 @@
<?php
namespace CoursEndingBundle\Form\Type;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Propel\Bundle\PropelBundle\Form\BaseAbstractType;
class FormType extends BaseAbstractType
{
protected $options = array(
'name' => 'form',
'allow_extra_fields' => true,
'data_class' => 'CoursEndingBundle\Model\Form',
);
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add(
'id',
TextType::class,
array(
)
);
$builder->add(
'label',
TextType::class,
array(
)
);
$builder->add(
'active',
TextType::class,
array(
)
);
}
}

View file

@ -0,0 +1,34 @@
<?php
namespace CoursEndingBundle\Form\Type;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Extension\Core\Type\CollectionType;
use Propel\Bundle\PropelBundle\Form\BaseAbstractType;
use CoursEndingBundle\Form\Type\FormsType;
use Propel\Bundle\PropelBundle\Form\Type\ModelType;
use CoursEndingBundle\Model\Form;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
use CoursEndingBundle\Form\Type\FormType;
class FormsType extends BaseAbstractType
{
protected $options = array(
'name' => 'forms',
'allow_extra_fields' => true,
'csrf_protection' => false,
);
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add(
'forms',
CollectionType::class,
[
'entry_type' => FormType::class,
'allow_add' => true,
'by_reference' => false,
]
);
}
}

View file

@ -19,14 +19,4 @@ class Form extends BaseForm
{ {
return new DataRestContainer(parent::getQuestions()->getData()); return new DataRestContainer(parent::getQuestions()->getData());
} }
/**
* {@inheritdoc}
* @JMS\Serializer\Annotation\SerializedName("created_at")
* @JMS\Serializer\Annotation\VirtualProperty
*/
public function getCreatedAtRest()
{
return new DataRestContainer($this->getCreatedAt());
}
} }

View file

@ -7,7 +7,7 @@
<behavior name="timestampable"/> <behavior name="timestampable"/>
<behavior name="CoursEndingBundle\Propel\Behavior\FOSRestBehavior"> <behavior name="fos_rest">
<parameter name="id" value="" /> <parameter name="id" value="" />
<parameter name="label" value="" /> <parameter name="label" value="" />
<parameter name="active" value="" /> <parameter name="active" value="" />

View file

@ -1,5 +1,5 @@
new Vue({ new Vue({
el: '#forms', el: '#forms-render',
data: { data: {
forms: [] forms: []
@ -14,6 +14,19 @@ new Vue({
this.$http.get(Routing.generate('api_get_forms'), function(forms) { this.$http.get(Routing.generate('api_get_forms'), function(forms) {
this.$set('forms', forms.data); this.$set('forms', forms.data);
}); });
},
save: function() {
var data = {
forms: {
forms: this.forms
}
};
this.$http.post(
Routing.generate('api_post_forms'),
data
);
} }
} }
}) })

View file

@ -2,17 +2,29 @@
{% block body %} {% block body %}
<div id="forms" class="collection"> {{form_row(form.forms)}}
{{ form_rest(form) }}
<div id="foo"></div>
<div id="forms-render" class="collection">
<div class="collection-item" v-for="form in forms"> <div class="collection-item" v-for="form in forms">
{% raw %} {% raw %}
<div class="collection-item-title"> <div class="collection-item-title">
<input type="text" v-model="form.label" />
{{ form.label }} {{ form.label }}
</div> </div>
<hr />
<div class="collection-item-content"> <div class="collection-item-content">
{{ form.active ? 'ACTVITÉ' : 'NON ACTIVÉ' }} {{ form.active ? 'ACTVITÉ' : 'NON ACTIVÉ' }}
</div> </div>
{% endraw %} {% endraw %}
</div> </div>
<input v-on:click="save" type="button" value="Enregistrer" />
</div> </div>
{% endblock %} {% endblock %}