【问题标题】:Symfony 2, CRUD is not working. Which version of Symfony is the best to use?Symfony 2,CRUD 不工作。哪个版本的 Symfony 最好用?
【发布时间】:2016-03-08 03:13:01
【问题描述】:

我无法在 Symfony 中使用 CRUD generate。我相信这很可能取决于 Symfony 版本。哪个版本的 Symfony 最好用?

今天我更新了 Symfony:

c:\Bitnami\wampstack-5.5.30-0\sym_prog>php symfony self-update

我收到消息:将 Symfony 安装程序更新到 1.4.0

后来我做了一个新项目:

c:\Bitnami\wampstack-5.5.30-0\sym_prog\proj2>php symfony new proj2 lts

// lts 表示长期支持 并收到一条消息: OK Symfony 2.8.0 安装成功。现在你可以: * 将当前目录更改为 C:\Bitnami\wampstack-5.5.30-0\sym_prog\prj2 * 在 app/config/parameters.yml 文件中配置您的应用程序。 * 运行您的应用程序: 1. 执行 php app/console server:run 命令。 2. 浏览到http://localhost:8000 URL。 * 阅读http://symfony.com/doc的文档

生成实体后,我遇到了 crud 问题。

c:\Bitnami\wampstack-5.5.30-0\sym_prog\proj2>php app/console doctrine:generate:crud MeetingBundle:User
The Entity shortcut name [MeetingBundle:User]:
Do you want to generate the "write" actions [no]? Yes
Configuration format (yml, xml, php, or annotation) [annotation]:
Routes prefix [/user]:

虽然 crud 生成控制器和视图(后者不是在 bundle/resources/views 中生成,而是在 app/resources/views 中生成),但是 crud 不生成表单,因此我无法创建/更新/视图/删除用户或其他实体!

我相信它只取决于 Symfony 版本。那么哪个版本最好用呢?

【问题讨论】:

    标签: php symfony crud


    【解决方案1】:

    我不知道哪个 Symfony 版本会为 crud 生成表单。

    但就我而言,我刚刚创建了自定义表单: C:\Bitnami\wampstack-5.5.30-0\sym_prog\proj2\src\MeetingBundle\Form\UserType.php

    <?php
    
    namespace MeetingBundle\Form;
    
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilderInterface;
    use Symfony\Component\OptionsResolver\OptionsResolverInterface;
    
    class UserType extends AbstractType
    {
        /**
         * @param FormBuilderInterface $builder
         * @param array $options
         */
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder
                ->add('username')
                ->add('password')
                ->add('email')
                ->add('phone')
               // ->add('roles') 
           /* ERROR: An exception has been thrown during the rendering of a template 
      ("Notice: Array to string conversion") in form_div_layout.html.twig at line 13. 
                    http://stackoverflow.com/questions/17314996/symfony2-array-to-string-conversion-error
                    */
                ->add('isActive')
                ->add('events')
                    // createdAt
            ;
        }
    
        /**
         * @param OptionsResolverInterface $resolver
         */
        public function setDefaultOptions(OptionsResolverInterface $resolver)
        {
            $resolver->setDefaults(array(
                'data_class' => 'MeetingBundle\Entity\User'
            ));
        }
    
        /**
         * @return string
         */
        public function getName()
        {
            return 'meetingbundle_user';
        }
    }
    

    并从 Controller 中使用它: C:\Bitnami\wampstack-5.5.30-0\sym_prog\proj2\src\MeetingBundle\Controller\UserController.php

    ...
    use MeetingBundle\Form\UserType;
    ....
    class UserController extends Controller {
    ...
        public function editAction(Request $request, User $user)
        {
    ...
            $editForm = $this->createForm(new UserType(), $user);
    

    【讨论】:

      【解决方案2】:

      使用命令:

      >php app/console doctrine:generate:crud
      

      Symfony 2.7.7 版和 Symfony 2.3.35 版 - 在 src/Namespace/Bundle/Resources/views/EntityName 文件夹中生成实体视图。它还使用文件 EntitnyNameType.php 生成控制器和文件夹表单。 Crud 功能齐全。

      Symfony 2.8.0 版(长期支持) - 为 app/Resources/views/EntitnyName 文件夹中的实体生成视图并生成控制器。它不会生成表单,因此 CRUD 不起作用。

      附言 检查您使用的 Symfony 版本:

      c:\Bitnami\wampstack-5.5.30-0\sym_prog\star>php app/console --version
      

      要为您的项目使用特定版本的 Symfony,您必须在项目创建期间告知这一点:

      $ symfony new my_project_name 2.6
      

      http://symfony.com/doc/current/book/installation.html

      如果有人可以提供更多关于哪个 Symfony 版本更好的信息,请告诉我。

      【讨论】:

        猜你喜欢
        • 2011-05-18
        • 2012-06-19
        • 1970-01-01
        • 2018-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-08-04
        相关资源
        最近更新 更多