标签: symfony-forms

形式上一对一的关联?

在symfony 2.0中,如何使用表单中的一对一关联创建下拉列表?你们能举好榜样吗?

php one-to-one symfony-forms symfony

6
推荐指数
1
解决办法
3075
查看次数

在Symfony2单选按钮选项字段上设置默认值

我有以下Symfony2表单:

public function buildForm(FormBuilder $builder, array $options)
{   
    $builder
        ->add('submitter_is_home', 'choice', array(
            'expanded' => true,
            'choices' => array('1' => 'Home', '' => 'Away'),
            'data' => '1',
        ))  
    ;   
}   
Run Code Online (Sandbox Code Playgroud)

(为清楚起见,我省略了其他字段.)

当我在浏览器中访问此表单时,未选中"主页"选项.我也检查了源代码,看起来也没有设置正确的属性.

对于单选按钮,默认值的工作方式与其他类型的choice字段的工作方式不同吗?这可能会发生什么?

symfony-forms symfony

6
推荐指数
1
解决办法
1万
查看次数

Symfony2和ParamConverter(s)

访问我的路线/message/new我将显示一个表单,用于向一个或多个客户发送新消息.表单模型包含(以及其他)Customer实体集合:

class MyFormModel
{
   /**
    * @var ArrayCollection
    */
    public $customers;
}
Run Code Online (Sandbox Code Playgroud)

我想使用GET参数实现自动客户选择customers,如下所示:

message/new?customers=2,55,543
Run Code Online (Sandbox Code Playgroud)

现在只需拆分,并进行查询即可获得客户:

public function newAction(Request $request)
{
    $formModel = new MyFormModel();

    // GET "customers" parameter
    $customersIds = explode($request->get('customers'), ',');

    // If something was found in "customers" parameter then get entities
    if(!empty($customersIds)) :

        $repo  = $this->getDoctrine()->getRepository('AcmeHelloBundle:Customer');
        $found = $repo->findAllByIdsArray($customersIds);

        // Assign found Customer entities
        $formModel->customers = $found;
    endif;

    // Go on showing the form
} …
Run Code Online (Sandbox Code Playgroud)

doctrine symfony-forms symfony doctrine-orm

6
推荐指数
1
解决办法
7818
查看次数

Symfony Twig形式特定领域的主题

我有一个自定义表单字段类型和相关的表单主题.在一个页面上,我有很多这些领域,但我特别想改变其中一个领域.

有没有办法以不同方式对同一类型(和同一文件)中的某些字段进行主题化?

一个简化的例子:

form_fields.html.twig :(本地主题文件)

{% block my_dropdown_row %}
<div>
    {{ form_label(form) }}
    {{ form_widget(form) }}
    {{ form_errors(form) }}
</div>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

在我的表单模板中(所有这些字段具有相同的类型 - my_dropdown

{{ form_row(form.selectionA) }}
{{ form_row(form.selectionB) }}
{{ form_row(form.selectionC) }}
{{ form_row(form.final_selection) }}
Run Code Online (Sandbox Code Playgroud)

如何将最终字段的样式与其他字段区分开来?这些小部件中有很多代码,因此重复性越低越好.

symfony-forms symfony twig symfony-2.1

6
推荐指数
1
解决办法
2万
查看次数

如何让Symfony表单与REST API一起使用?

我目前正在尝试使用symfony表单来处理我的帖子并放入rest api端点.

目前我有:

$request = $this->getRequest();
$cc = new CreditCard();
$form = $this->createForm(new CreditCardType(), $cc);

$form->handleRequest($request);

if ($form->isValid()) {
  //...
}
Run Code Online (Sandbox Code Playgroud)

但是,表单永远不会有效.查看问题,似乎表单的isSubmitted字段为false,因此它永远不会通过验证.此外,由于这是一个api调用,我在creditcardtype中将csrf_protection设置为false.

以下是我向用户提交的数据的示例:

{
  "credit_card": {
     "name" : "Example Name"
     ...
  }
}
Run Code Online (Sandbox Code Playgroud)

如何将此post/put请求注册为已提交并且表单验证者通过?谢谢.

symfony-forms symfony symfony-2.3

6
推荐指数
2
解决办法
7995
查看次数

如何从symfony 2控制器中删除嵌入表单中的表单域

我有一个表格如下:

class AdminEmployerForm extends AbstractType {

    public function buildForm(FormBuilderInterface $builder, array $options) {
        $builder
            ->add('firstName', 'text')
            ->add('user', new AdminUserForm());
    }
}


class AdminUserForm extends AbstractType {

    public function buildForm(FormBuilderInterface $builder, array $options) {
        $builder
            ->add('username', 'text')
            ->add('email', 'text');
    }
}
Run Code Online (Sandbox Code Playgroud)

我在控制器中调用AdminEmployerForm,我想从AdminEmployerForm中删除AdminUserForm的电子邮件字段:

$form = $this->createForm(new AdminEmployerForm, $employer);
//i want to do something like $form->remove('email')
Run Code Online (Sandbox Code Playgroud)

如何使用$ form-> remove()删除嵌入式表单中的字段?是否可以从控制器中删除嵌入式表单的字段?

symfony-forms symfony symfony-2.3

6
推荐指数
1
解决办法
7873
查看次数

Symfony表单(作为Doctrine的独立组件)EntityType不起作用

我正在使用Symfony表单(v3.0)而没有Symfony框架的其余部分.使用Doctrine v2.5.

我创建了一个表单,这里是表单类型:

class CreateMyEntityForm extends BaseFormType {

    public function buildForm(FormBuilderInterface $builder, array $options){
        $builder->add('myEntity', EntityType::class);
    }
}
Run Code Online (Sandbox Code Playgroud)

加载页面时,我收到以下错误.

传递给Symfony\Bridge\Doctrine\Form\Type\DoctrineType :: __ construct()的参数1必须是Doctrine\Common\Persistence\ManagerRegistry的实例,没有给出,在/ var/www/dev3/Vendor/symfony/form中调用/FormRegistry.php在第85行

我相信有一些配置需要在这里实现,但我不知道如何创建一个实现ManagerRegistryInterface的类 - 如果这是正确的事情.

有什么指针吗?

编辑 - 这是我设置Doctrine的代码

use Doctrine\ORM\EntityManager;
use Doctrine\ORM\Tools\Setup;

class Bootstrap {

    //...some other methods, including getCredentials() which returns DB credentials for Doctrine

    public function getEntityManager($env){

        $isDevMode = $env == 'dev';

        $paths = [ROOT_DIR . '/src'];

        $config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode, null, null, false);

        $dbParams = $this->getCredentials($env);

        $em = EntityManager::create($dbParams, $config);

        return $em;
    }
}
Run Code Online (Sandbox Code Playgroud)

php symfony-forms symfony doctrine-orm

6
推荐指数
2
解决办法
1926
查看次数

如何将Symfony表单MoneyType输入覆盖为type ="number"?

Symfony MoneyType字段呈现input type="text"允许用户在字段中键入他们想要的内容.

如何覆盖此渲染,input type="number"以便用户只能输入数字字符?

$formBuilder->add("amount", MoneyType::class, [
  'currency' => 'USD'
]);
Run Code Online (Sandbox Code Playgroud)

当前输出:

<div><label for="form_amount" class="required">Amount</label>$ <input type="text" id="form_amount" name="form[amount]" required="required"  /></div>
Run Code Online (Sandbox Code Playgroud)

我想要实现的目标:

<div><label for="form_amount" class="required">Amount</label>$ <input type="number" id="form_amount" name="form[amount]" required="required"  /></div>
Run Code Online (Sandbox Code Playgroud)

我试图简单地覆盖属性类型,但所有这一切都是在最后添加第二个type属性,这不起作用,因为它显然是无效的HTML.

$formBuilder->add("amount", MoneyType::class, [
  'attr' => [
    'type' => 'number',
  ],
  'currency' => 'USD'
]);
Run Code Online (Sandbox Code Playgroud)

这是我简单的树枝:

{{ form_start(form) }}

    {{ form_widget(form) }}

    <input type="submit" />

{{ form_end(form) }}
Run Code Online (Sandbox Code Playgroud)

我也很好奇,为什么这是Money的默认输入类型?我正在考虑扩展或修改课程以适应这一点,但我确信有一些我没有看到的优势.

php currency symfony-forms symfony

6
推荐指数
1
解决办法
3164
查看次数

表单中的Symfony2 FileType输入始终返回null

我正在努力在我的网站上上传.pdf文件.

我创建了一个实体,其中包含字符串中文件的名称.有实体映射:

<field name="pdf" type="string" column="pdf" length="200" nullable="true"/>
Run Code Online (Sandbox Code Playgroud)

我输入文件的表单:

$builder
        ->add('pdf', FileType::class, array('label' => 'Fiche de paie'))
        /* other input */
    ;
Run Code Online (Sandbox Code Playgroud)

我的表格观点:

{{ form_start(form) }}
    {{ form_row(form._token) }}
    <div class="modal-body row">
        <div class="col-md-6 col-sm-8">
            /* other input */
            {{ form_row(form.pdf) }}}
        </div>
        <div class="col-md-6 col-sm-8">
            /* other input */
        </div>
    </div>

    <div class="modal-footer">
        <button type="button" class="btn btn-info" id="save">{% trans %}Save{% endtrans %}</button>
    </div>
    {{ form_end(form, { 'render_rest': false } ) }}
Run Code Online (Sandbox Code Playgroud)

还有控制器:

if ($form->isSubmitted() && $form->isValid()) {
        $pdf = …
Run Code Online (Sandbox Code Playgroud)

php symfony-forms symfony twig

6
推荐指数
1
解决办法
957
查看次数

Symfony在控制器中获取表单数据

我有这个观点:

//login.html.twig

<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>MY APP</title>
</head>

<body>
    <form action="{{ path('conection') }}" method="post" name="formulario_login">
        <label for="username">User:</label>
        <input type="text" id="username" name="_username" value="{{ last_username|default('') }}" />
        <br />
        <label for="password">Password:</label>
        <input type="password" id="password" name="_password" />
        <br />
        <input type="checkbox" id="remember_me" name="_remember_me"/>
        <label for="remember_me">Remember me</label>
        <br />
        <input type="submit" name="login" value="Login" />
    </form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

在我的路由文件中:

conection:
pattern:  /conection
defaults: { _controller: UserBundle:Default:conection}
Run Code Online (Sandbox Code Playgroud)

而我的控制器

<?php

namespace myApp\UserBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;

class DefaultController extends Controller
{ …
Run Code Online (Sandbox Code Playgroud)

symfony-forms symfony symfony-2.1

6
推荐指数
2
解决办法
2万
查看次数