小编Jer*_*cks的帖子

Symfony2表单实体更新

谁能告诉我一个Symfony2表单实体更新的具体示例?本书仅介绍如何创建新实体.我需要一个如何更新现有实体的示例,其中我最初在查询字符串上传递实体的id.

我无法理解如何在检查帖子的代码中再次访问表单而无需重新创建表单.

如果我重新创建表单,这意味着我还必须再次查询该实体,这似乎没有多大意义.

这是我目前所拥有的,但它不起作用,因为它在表单发布时覆盖实体.

public function updateAction($id)
{
    $em = $this->getDoctrine()->getEntityManager();
    $testimonial = $em->getRepository('MyBundle:Testimonial')->find($id);
    $form = $this->createForm(new TestimonialType(), $testimonial);

    $request = $this->get('request');
    if ($request->getMethod() == 'POST') {
        $form->bindRequest($request);

        echo $testimonial->getName();

        if ($form->isValid()) {
            // perform some action, such as save the object to the database
            //$testimonial = $form->getData();
            echo 'testimonial: ';
            echo var_dump($testimonial);
            $em->persist($testimonial);
            $em->flush();

            return $this->redirect($this->generateUrl('MyBundle_list_testimonials'));
        }
    }

    return $this->render('MyBundle:Testimonial:update.html.twig', array(
        'form' => $form->createView()
    ));
}
Run Code Online (Sandbox Code Playgroud)

forms entity symfony

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

Doctrine 2 mysql FIELD函数按顺序排列

我正在尝试在查询中的order by子句中使用MySQL FIELD函数.我假设Doctrine 2不支持开箱即用的FIELD功能 - 这是真的吗?如果是这样,我该如何使用它?我是否必须将整个查询转换为本机查询?是否有添加此功能的Doctrine 2扩展?

mysql field native doctrine-orm

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

教义2子查询

我想使用查询构建器实现子查询,但我不理解语法.我正在处理一个位置表,该表具有可以是城市,州或邮政编码的条目,具体取决于所设置的位置类型.我希望获得所有处于某种状态的地点并取出任何城市类型并且人口数量低于一定数量的地点.

$qb->select('l')
->from('Entity\Location', 'l')
->where('l.state = :state')
->setParameter('state', 'UT')
->andWhere('...don't know what to put here');
Run Code Online (Sandbox Code Playgroud)

在和我在哪里我基本上需要说

并且id不在(从location_type = 1和population <1000的位置选择id)

更新:我能够使用直接DQL执行此操作,但很高兴看到如何使用查询生成器执行此操作.

$qb->andWhere('l.id NOT IN (SELECT l2.id FROM Entity\Location AS l2 WHERE l2.location_type = 1 AND l2.population < 1000)');
Run Code Online (Sandbox Code Playgroud)

subquery doctrine-orm

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

Symfony2:在生产中访问与开发相同的路径

我正在使用Symfony2开发一个小应用程序.我可以在我的开发环境中访问所有路径没有问题:

http://symfony/app_dev.php/cp("symfony"在我的hosts文件中解析为localhost)

但是,只要我在生产环境中尝试访问它,我就会得到一个404错误页面:

HTTP://symfony/app.php/cp

哎呀!发生错误服务器返回"404 Not Found".有些东西坏了.请发送电子邮件至[email],告诉我们发生此错误时您在做什么.我们会尽快修复它.给您造成的任何不便,请原谅.

在我可以在生产中查看我的应用程序之前,是否需要更改/执行某些操作?我没有搞乱任何核心文件(内核/ bootstrap/app文件等).我正在使用Release Candidate 3.

production production-environment dev-to-production symfony

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

在ViewScript中显示Zend_Form表单错误

我正在尝试使用ViewScript在表单之前显示所有表单错误.以下是我目前在ViewScript中尝试使用的代码:

<div class="errors">
<?php echo $this->formErrors($this->element->getMessages()); ?>
</div>
Run Code Online (Sandbox Code Playgroud)

这个电话给我一个错误信息:

警告:htmlspecialchars()期望参数1为字符串,给定数组

我已经看到这个相同的代码建议其他地方,但它不适合我.如果我打印出$ this-> element-> getMessages(),我确实看到如下错误消息:

数组([myField] =>数组([isEmpty] =>值是必需的,不能为空))

有任何想法吗?

forms zend-framework

5
推荐指数
1
解决办法
9323
查看次数

Zend Framework 内存缓存会话保存处理程序和使用现有会话

我在主域上有一个遗留的 PHP 应用程序,它使用 memcache 作为我们会话的后端。这很好用。我正在尝试在子域上添加一个新的 Zend Framework 应用程序,该应用程序可以共享在主域上创建的相同会话。

我在 application.ini 中配置了会话和保存处理程序:

resources.session.saveHandler.class = "App_Session_SaveHandler_Cache"
resources.session.saveHandler.options.type = "Libmemcached"
resources.session.saveHandler.options.maxlifetime = 300
resources.session.saveHandler.options.front.lifetime = 300
resources.session.saveHandler.options.front.automatic_serialization = true
resources.session.saveHandler.options.back.servers.0.host = "127.0.0.1"
resources.session.saveHandler.options.back.servers.0.port = 11211
resources.session.saveHandler.options.back.servers.0.persistent = true
resources.session.saveHandler.options.back.servers.0.status = true
resources.session.saveHandler.options.back.servers.1.host = "127.0.0.2"
resources.session.saveHandler.options.back.servers.1.port = 11211
resources.session.saveHandler.options.back.servers.1.persistent = true
resources.session.saveHandler.options.back.servers.1.status = true
Run Code Online (Sandbox Code Playgroud)

会话保存处理程序类(App_Session_SaveHanlder_Cache 实现 Zend_Session_SaveHandler_Interface 并使用 Zend_Cache 工厂传递后端存储的 Libmemcached 选项。

在我的引导程序中,我将 _init 方法列为调用会话引导程序的第一个方法:

protected function _initForceSession()
{   
    $this->bootstrap('session');
    Zend_Session::start();
}
Run Code Online (Sandbox Code Playgroud)

我希望能够继续使用来自我的子域中主域的现有会话(如果它存在)并创建一个新会话(如果那里还没有)。

我能够在旧应用程序中创建的新应用程序中成功读取会话 ID。但是,我无法让新应用程序在会话本身中实际读取。

我尝试从新应用程序直接读取内存缓存(绕过会话),我能够以这种方式获取会话数据。

我在这里缺少什么?

session memcached zend-framework libmemcache

5
推荐指数
0
解决办法
1906
查看次数

Zend Framework 2快速入门与Doctrine

我正在努力让ZF2快速入门与Doctrine一起使用.我以为我设置正确,但我收到以下错误.有人看过吗?

文件:/Users/jhicks/workspace/zf2-example/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/MappingException.php:38消息:未找到类'专辑\实体\专辑'链配置的命名空间ZfcUser\Entity,\ Entity,ZfcUserDoctrineORM\Entity

这是我的Doctrine配置:

return array(
    'doctrine' => array(
        'driver' => array(
            __NAMESPACE__ . '_driver' => array(
                'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
                'cache' => 'array',
                'paths' => array(__DIR__ . '/../src/' . __NAMESPACE__ . '/Entity')
            ),
            'orm_default' => array(
                'drivers' => array(
                    __NAMESPACE__ . '\Entity' => __NAMESPACE__ . '_driver'
                )
            )
        ),
        'connection' => array(
            'orm_default' => array(
                'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver',
                'params' => array(
                    'host'     => 'localhost',
                    'port'     => '3306',
                    'dbname'   => 'zf2example',
                    'user'     => 'user',
                    'password' => 'password'
                ),  
            )
        )
    ), …
Run Code Online (Sandbox Code Playgroud)

doctrine-orm zend-framework2

5
推荐指数
1
解决办法
4731
查看次数

这条Symfony2路线出了什么问题?

我已经使用注释建立了一条路线.看起来对我来说,Symfony2说这是错的.这是路线:

@Route("/news/{id}/{slug}", name="newsarticle")
Run Code Online (Sandbox Code Playgroud)

这是我认为与路线匹配的示例网址:

http://somesite.com/news/202/my-news-title

这是功能骨架:

public function newsArticleAction($id, $slug)
{

}
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?我收到500错误,日志说:

[2012-10-30 20:36:35] request.INFO:匹配路由"newsarticle"(参数:"_ control":"App\SiteBundle\Controller\DefaultController :: newsArticleAction","id":"202"," slug":"my-news-title","_ lute":"newsarticle")[] [] [2012-10-30 20:36:36] app.INFO:来自听众:"newsarticle"路线有些缺失强制参数("id").[] [] [2012-10-30 20:36:36] request.CRITICAL:Symfony\Component\Routing\Exception\MissingMandatoryParametersException:"newsarticle"路由有一些缺少必需参数("id").(未捕获的例外)/home/user/app/cache/prod/classes.php第676行[] []

routing symfony

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