Validation formulair + affichage des erreurs
This commit is contained in:
parent
c18a861147
commit
13aadf4f4f
|
@ -2,6 +2,8 @@
|
||||||
|
|
||||||
namespace CoursEndingBundle\Controller;
|
namespace CoursEndingBundle\Controller;
|
||||||
|
|
||||||
|
use CoursEndingBundle\Form\Type\FormType;
|
||||||
|
use Doctrine\ORM\Query\Expr\From;
|
||||||
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
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;
|
||||||
|
@ -19,12 +21,13 @@ class MainController extends Controller
|
||||||
*/
|
*/
|
||||||
public function indexAction(Request $request)
|
public function indexAction(Request $request)
|
||||||
{
|
{
|
||||||
|
|
||||||
$forms = ['forms' => FormQuery::create()->find()];
|
$forms = ['forms' => FormQuery::create()->find()];
|
||||||
|
|
||||||
$form = $this->createForm(FormsType::class, $forms);
|
$form = $this->createForm(FormsType::class, $forms);
|
||||||
|
|
||||||
if ($form->isValid()) {
|
if ($form->isValid()) {
|
||||||
die("ok");
|
//die("ok");
|
||||||
}
|
}
|
||||||
|
|
||||||
return [
|
return [
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
namespace CoursEndingBundle\Controller;
|
namespace CoursEndingBundle\Controller;
|
||||||
|
|
||||||
|
use CoursEndingBundle\Model\Form;
|
||||||
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
||||||
use FOS\RestBundle\Controller\FOSRestController;
|
use FOS\RestBundle\Controller\FOSRestController;
|
||||||
use FOS\RestBundle\Controller\Annotations as Rest;
|
use FOS\RestBundle\Controller\Annotations as Rest;
|
||||||
|
@ -63,7 +64,14 @@ class RestController extends FOSRestController
|
||||||
|
|
||||||
$form->handleRequest($request);
|
$form->handleRequest($request);
|
||||||
|
|
||||||
return View::create($form, 400);
|
if ($form->isValid()) {
|
||||||
|
$forms['forms']->save();
|
||||||
|
echo "Valid";
|
||||||
|
print_r($form->isValid());
|
||||||
|
die();
|
||||||
|
}
|
||||||
|
|
||||||
|
return View::create($form, 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
// public function postQuestionsAction(Request $request)
|
// public function postQuestionsAction(Request $request)
|
||||||
|
|
|
@ -5,6 +5,7 @@ namespace CoursEndingBundle\Form\Type;
|
||||||
use Symfony\Component\Form\FormBuilderInterface;
|
use Symfony\Component\Form\FormBuilderInterface;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
||||||
use Propel\Bundle\PropelBundle\Form\BaseAbstractType;
|
use Propel\Bundle\PropelBundle\Form\BaseAbstractType;
|
||||||
|
use Symfony\Component\Validator\Constraints\NotBlank;
|
||||||
|
|
||||||
class FormType extends BaseAbstractType
|
class FormType extends BaseAbstractType
|
||||||
{
|
{
|
||||||
|
@ -20,6 +21,9 @@ class FormType extends BaseAbstractType
|
||||||
'id',
|
'id',
|
||||||
TextType::class,
|
TextType::class,
|
||||||
array(
|
array(
|
||||||
|
'constraints' => array(
|
||||||
|
new NotBlank(),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -27,6 +31,9 @@ class FormType extends BaseAbstractType
|
||||||
'label',
|
'label',
|
||||||
TextType::class,
|
TextType::class,
|
||||||
array(
|
array(
|
||||||
|
'constraints' => array(
|
||||||
|
new NotBlank(),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -34,6 +41,9 @@ class FormType extends BaseAbstractType
|
||||||
'active',
|
'active',
|
||||||
TextType::class,
|
TextType::class,
|
||||||
array(
|
array(
|
||||||
|
// 'constraints' => array(
|
||||||
|
// new NotBlank(),
|
||||||
|
// ),
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
<behavior name="timestampable"/>
|
<behavior name="timestampable"/>
|
||||||
|
|
||||||
<behavior name="fos_rest">
|
<behavior name="CoursEndingBundle\Propel\Behavior\FOSRestBehavior">
|
||||||
<parameter name="id" value="" />
|
<parameter name="id" value="" />
|
||||||
<parameter name="label" value="" />
|
<parameter name="label" value="" />
|
||||||
<parameter name="active" value="" />
|
<parameter name="active" value="" />
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
new Vue({
|
Vue.config.debug = true;
|
||||||
|
Vue.config.devtools = true;
|
||||||
|
var x = new Vue({
|
||||||
el: '#forms-render',
|
el: '#forms-render',
|
||||||
|
|
||||||
data: {
|
data: {
|
||||||
|
@ -12,21 +14,46 @@ new Vue({
|
||||||
methods: {
|
methods: {
|
||||||
fetchForms: function() {
|
fetchForms: function() {
|
||||||
this.$http.get(Routing.generate('api_get_forms'), function(forms) {
|
this.$http.get(Routing.generate('api_get_forms'), function(forms) {
|
||||||
|
for (var i = 0; i < forms.data.length; i++) {
|
||||||
|
forms.data[i].errors = {};
|
||||||
|
}
|
||||||
this.$set('forms', forms.data);
|
this.$set('forms', forms.data);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
save: function() {
|
save: function() {
|
||||||
|
var that = this;
|
||||||
var data = {
|
var data = {
|
||||||
forms: {
|
forms: {
|
||||||
forms: this.forms
|
forms: this.forms
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
this.$http.post(
|
this.$http.post(Routing.generate('api_post_forms'), data)
|
||||||
Routing.generate('api_post_forms'),
|
.success(function (data) {
|
||||||
data
|
console.log(data);
|
||||||
);
|
})
|
||||||
|
.error(function (data) {
|
||||||
|
console.log(data);
|
||||||
|
if (data.hasOwnProperty("code") && data.code === 400
|
||||||
|
&& data.hasOwnProperty('message') && data.message === "Validation Failed" ) {
|
||||||
|
var k = 0;
|
||||||
|
for (var i = 0; i < data.errors.children.forms.children.length; i++) {
|
||||||
|
var form = data.errors.children.forms.children[i];
|
||||||
|
//console.log(form);
|
||||||
|
for ( var j in form ) {
|
||||||
|
var errorsInputs = form[j];
|
||||||
|
//console.log(errorsInputs);
|
||||||
|
that.forms[k].errors = errorsInputs;
|
||||||
|
//that.forms[k].label = 'toto';
|
||||||
|
|
||||||
|
k++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log(that.forms);
|
||||||
|
//that.$set('forms', that.forms); //change rien avec ou sans
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
|
@ -2,12 +2,13 @@
|
||||||
|
|
||||||
{% block body %}
|
{% block body %}
|
||||||
|
|
||||||
{{form_row(form.forms)}}
|
{#{{ form_row(form.forms) }}#}
|
||||||
|
{##}
|
||||||
{{ form_rest(form) }}
|
{#{{ form_rest(form) }}#}
|
||||||
|
|
||||||
<div id="foo"></div>
|
|
||||||
|
|
||||||
|
<div id="foo">
|
||||||
|
<br><hr><br>
|
||||||
|
</div>
|
||||||
<div id="forms-render" class="collection">
|
<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 %}
|
||||||
|
@ -16,11 +17,20 @@
|
||||||
{{ form.label }}
|
{{ form.label }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<hr />
|
|
||||||
|
|
||||||
<div class="collection-item-content">
|
<div class="collection-item-content">
|
||||||
{{ form.active ? 'ACTVITÉ' : 'NON ACTIVÉ' }}
|
<input type="checkbox" v-model="form.active">
|
||||||
</div>
|
</div>
|
||||||
|
<div class="collection-item-errors">
|
||||||
|
<div v-for="errors in form.errors">
|
||||||
|
<p>{{ errors.errors }}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--<div class="collection-item-questions">
|
||||||
|
<div v-for="questions in form.questions.data">
|
||||||
|
{{ questions | json }}
|
||||||
|
</div>
|
||||||
|
</div>-->
|
||||||
|
<hr />
|
||||||
{% endraw %}
|
{% endraw %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ use Symfony\Component\Debug\Debug;
|
||||||
// Feel free to remove this, extend it, or make something more sophisticated.
|
// Feel free to remove this, extend it, or make something more sophisticated.
|
||||||
if (isset($_SERVER['HTTP_CLIENT_IP'])
|
if (isset($_SERVER['HTTP_CLIENT_IP'])
|
||||||
|| isset($_SERVER['HTTP_X_FORWARDED_FOR'])
|
|| isset($_SERVER['HTTP_X_FORWARDED_FOR'])
|
||||||
|| !(in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1', 'fe80::1', '::1')) || php_sapi_name() === 'cli-server')
|
|| !(in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1','192.168.33.1', 'fe80::1', '::1')) || php_sapi_name() === 'cli-server')
|
||||||
) {
|
) {
|
||||||
header('HTTP/1.0 403 Forbidden');
|
header('HTTP/1.0 403 Forbidden');
|
||||||
exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.');
|
exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.');
|
||||||
|
|
Loading…
Reference in a new issue