我无法使用带有Symfony的CRUD生成。我相信这很可能取决于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
//它意味着长期支持收到一条消息:OK Symfony 2.8.0已成功安装。现在您可以:*将当前目录更改为C:''Bitnami''wampstack-5.530-0''sym_prog''prj2*在app/config/parameters.yml文件中配置您的应用程序。*运行您的应用程序:1.执行php应用程序/控制台服务器:run命令。2.浏览到http://localhost:8000URL。*阅读文档,网址: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/view中生成的,而是在app/resources/views中生成的),但crud不生成表单,因此我无法创建/更新/查看/删除用户或其他实体!
我相信这只取决于Symfony的版本。因此,哪一个版本最好使用?
我不知道哪个Symfony版本为crud生成表单。
但在我的情况下,我只是创建了自定义表单:C: ''Bitnami''wampstack-5.530-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';
}
}
并从控制器中使用:C: ''Bitnami''wampstack-5.530-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);
使用命令:
>php app/console doctrine:generate:crud
Symfony 2.7.7版和Symfony 2.3.35版-在src/Namespace/Bundle/Resources/views/EntityName文件夹中生成实体视图。它还使用文件EntitnyNameType.php生成控制器和文件夹Form。Crud功能齐全。
Symfony 2.8.0版(长期支持)-为app/Resources/views/EntitnyName文件夹中的实体生成视图,还生成控制器。它不生成Form,因此CRUD不起作用。
p.s。要检查您使用的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版本更好的信息,请让我知道。