[英]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.