2016-06-22 2 views
0

私はsymfony2で角度jsの登録フォームに取り組んでいます。 symfony2形式で角度jsバリデーションを行うことができますか? ...助けてください ..私は、フォームを検証することはできませんし、また、私はsymfonyのコントローラにフォーム値をポストする方法を知らないので、私はこのプロジェクトで立ち往生しています。..symfony2フォームで角度jの検証を使用できますか?

私registration.html.twigコードを確認してください。..

<body ng-app="LoginApp"> 
    <div id="register" class="animate form" ng-controller="RegisterController as registerCtrl"> 
      {{ form_start(form, {'attr': {'name':'registerFrm', 'id':'registerFrmId','novalidate': '', 'ng-submit':'registerCtrl.registerFrm()'}}) }} 
       Your username 
       {{ form_row(form.username) }} 
       <span class="error" ng-show="submitted && registerFrm.adminuser[username].$error.required">Username is required!</span> 

       Your email 
       {{ form_row(form.email) }} 
       <span class="error" ng-show="submitted && registerFrm.adminuser[email].$invalid">Invalid email</span> 

       Your password 
       {{ form_row(form.plainPassword.first) }} 
       <span class="error" ng-show="submitted && registerFrm.adminuser[plainPassword][first].$error.required">Password is required!</span> 

       Please confirm your password 
       {{ form_row(form.plainPassword.second) }} 
       <span class="error" ng-show="submitted && registerFrm.adminuser[plainPassword][second].$error.required">Password is required!</span> 

       <p class="signin button"> 
        <input type="submit" name="signup" ng-model="signup" ng-click="submitted=true" value="Sign up" /> 
       </p> 
      {{ form_end(form) }} 
     </div> 

     <script> 
      var App = angular.module('LoginApp',[]); 

      App.controller('RegisterController', ['$scope',function($scope) { 

      }]); 
     </script> 
    </body> 

マイsymfonyのフォームビルダ

$builder 
->add('username', TextType::class , array( 
    'label' => false, 
    'attr' => array(
     'ng-model' => 'formData.username', 
     'id' => 'usernamesignup', 
     'placeholder' => 'myusername690', 
     'required' => false) 
    )) 
->add('email', TextType::class , array( 
    'label' => false, 
    'attr' => array(
     'ng-model' => 'formData.email', 
     'id' => 'emailsignup', 
     'placeholder' => '[email protected]', 
     'ng-pattern' => '/^([0-9a-zA-Z]([-\.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$/', 
     'required' => false) 
    )) 
->add('plainPassword', RepeatedType::class, array(
    'type' => PasswordType::class, 
    'first_options' => array(
     'label' => false, 
     'attr' => array(
      'ng-model' => 'formData.password', 
      'id' => 'passwordsignup', 
      'placeholder' => 'eg. X8df!90EO', 
      'required' => false) 
     ), 
    'second_options' => array('label' => false, 
    'attr' => array(
      'ng-model' => 'formData.confirm_password', 
      'id' => 'passwordsignup_confirm', 
      'placeholder' => 'eg. X8df!90EO', 
      'required' => false) 
     ), 
    ) 
); 

registration form image

答えて

0

フィールド名を持つフォームのhtmlを取得するために、枝でフォームをレンダリングするのが最も簡単な方法です。その後、フォーム提出リクエストでは正確に同じフィールド名を使用する必要があり、symfonyフォームコンポーネントがそれを処理します。

+0

として解釈されますが、私は、通常のHTMLフォームを作成する意味します登録のために? – reb

+0

はい、後で削除できます。フォームのHTMLコードを取得し、jsで同じようにします。 –

+0

は、私が試したと私は、このユーザ名=管理&のようにコンソールで取得していた電子メール= krebinj%40gmail.com&plainPassword = 654321&パスワード= 654321 をしかし、私は$ユーザーを印刷するとき、私はこの AppBundle \エンティティ\ユーザーvalues..like NULL配列を取得していますオブジェクト ( [ユーザ名:AppBundle \エンティティ\ユーザー:プライベート] => [電子メール:AppBundle \エンティティ\ユーザー:プライベート] => [パスワード:AppBundle \エンティティ\ユーザー:プライベート] => [plainPassword: === [作成日:AppBundle \ Entity \ User:プライベート] => [ID:AppBundle \ Entity \ User:private] => ) – reb

1

ねえドミトリーGrachikov、

は構文JSエラーを持つ

<span class="error" ng-show="submitted && registerFrm.adminuser[username].$error.required">Username is required!</span> 

<span class="error" ng-show="submitted && registerFrm['adminuser[username]'].$error.required">Username is required!</span> 

にあなたのコードにコードを変更してください。

あなたはadminユーザー[ユーザー名]という名前のプロパティを参照したい場合、あなたはこのようにそれを実行する必要があります。

registerFrm['adminuser[username]'].$error 

registerFrm.adminuser[username]が誤って(registerFrm.adminuser)[username]

関連する問題