簡體   English   中英

Symfony-我無法使用樹枝自定義表單

[英]Symfony - I can not customize my form with twig

我想在樹枝(登錄+密碼)中創建一個自定義的登錄表單。 如果輸入的信息存在,則表單應搜索“用戶”表和LDAP目錄。

此外,當我驗證表單時,我不想在URL中找到登錄名和密碼。

驗證時,如果用戶存在,則將其重定向到頁面,否則他將保留在登錄頁面上。

我設法制作了一個自定義的表單,但該表單在URL中返回了登錄名和密碼。

看起來像這樣:

在此處輸入圖片說明

這是樹枝中的代碼:

{% extends 'base.html.twig' %}
{% block stylesheets %}
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.0/js/bootstrap.min.js"></script>
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>rel="stylesheet"> 

{% endblock %}
{% block body %}

<form class="navbar-form navbar-center">
    <div class="input-group">
        <span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
        <input id="text" type="text" class="form-control" name="login" value="" placeholder="Login">                                        
    </div>
    <div class="input-group">
        <span class="input-group-addon"><i class="glyphicon glyphicon-lock"></i></span>
        <input id="password" type="password" class="form-control" name="password" value="" placeholder="Mot de passe">                                        
    </div>
    <button type="submit" class="btn btn-primary">Valider</button>
<br/><br/>
    Pas de compte académique ? <a href="{{path('paquets_index')}}">Demande de création de compte</a>
</form>

{% endblock %}

現在,我的目標是確保URL中沒有用於驗證的登錄名和密碼。 這只是一個檢查並起作用,它將在下一頁顯示是或否。 而且我做不到。

而且,從功能的角度來看,從我的Users實體中通過formType構建器是否有用? 或者我是否可以滿足於這種形式,該形式會將輸入的信息發送回控制器以進行驗證?

如有疑問,這是我的表單生成器

<?php

namespace Site\PagesBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
use Symfony\Component\Form\Extension\Core\Type\TextType;

class ConnexionType extends AbstractType
{
    /**
     * {@inheritdoc}
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
        ->add('identifiant', TextType::class)
        ->add('password', PasswordType::class,array(
            'attr' => array(
                'placeholder'=> 'Mot de passe',
                'label' =>'Mot de passe',
            )
        ))
        ;
    }/**
     * {@inheritdoc}
     */
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'Site\PagesBundle\Entity\User'
        ));
    }

    /**
     * {@inheritdoc}
     */
    public function getBlockPrefix()
    {
        return 'site_pagesbundle_user';
    }


}

謝謝你的幫助 !

當前,如果要在Twig文件中使用它,則不使用ConnexionType生成的{{form(form) }}如果通過控制器發送它,則可以像{{form(form) }}那樣顯示它。

您在這里擁有所有必要的信息

然后,為了不通過url傳遞登錄名和密碼,請使用POST方法

否則,我建議使用安全捆綁包Bundle Security來獲取安全表格

希望對您有幫助。

我不太確定,您打算如何徹底改造車輪。 但是symfony准備了很多東西,因為這在用例中並不罕見。

我喜歡3.4節有關建立登錄的教程: https : //symfony.com/doc/3.4/security/form_login_setup.html

(在側面,有可能切換到4.3或其他版本,但是3.4教程應該仍然可以使用,即使在4.x中也是如此)

您不需要特別使用自己的FormType進行登錄,因為安全組件已經處理了表單提交。 也看看csrf保護; o)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM