小编olg*_*lga的帖子

Symfony2,错误:无法自动验证“字符串”类型的值。请提供约束

Symfony 2 错误:无法自动验证“字符串”类型的值。请提供约束。

我不明白什么限制以及我必须提供什么?

我正在遵循“扩展 Symfony 2”一书第 4 章中的示例。我尝试制作自定义注释“ValidateUser”并在实体用户属性 $phone 上使用它。我也将“ValidUserListenerCustom”注册为服务,它重定向控制器操作 join4Action 的响应。此操作使用所述自定义注释“@ValidateUser(“join_event”)”进行注释。仅当用户的个人资料中有手机号码时,此操作才应将用户添加到事件中。

C:\Bitnami\wampstack-5.5.30-0\sym_prog\star\src\Yoda\UserBundle\Entity\User.php

/**
 * @ORM\Column(type="string", length=255, name="phone")
 * @Assert\NotBlank(groups={"join_event"})
*/
protected $phone;
Run Code Online (Sandbox Code Playgroud)

C:\Bitnami\wampstack-5.5.30-0\sym_prog\star\src\Yoda\UserBundle\Security\ValidUserListenerCustom.php

<?php

namespace Yoda\UserBundle\Security;

use Doctrine\Common\Annotations\Reader;
use Symfony\Bundle\FrameworkBundle\Routing\Router;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\Security\Core\SecurityContext;
use Symfony\Component\DependencyInjection\Container;
use Symfony\Component\HttpKernel\Event\FilterControllerEvent;


class ValidUserListenerCustom
{
    private $reader;
    private $annotation_name = 'Yoda\UserBundle\Security\Annotation\ValidateUser';

    private $router;
    private $session;
    private $sc;
    private $container;

    public function __construct(Reader $reader, Router $rou, Session $session, SecurityContext $sc, Container $cont)
    {
        /** @var AnnotationReader $reader */
        $this->reader = $reader; …
Run Code Online (Sandbox Code Playgroud)

php validation annotations symfony

6
推荐指数
0
解决办法
2441
查看次数

Symfony2,如何将数组作为参数传递给控制器​​动作?

如何使用Symfony 2将数组作为参数传递给控制器​​操作?你能不能写一个例子来定义如何定义路由,其中​​包含未知长度数组作为参数.例如url:http:// localhost:8000/blog/post /?tags = [tag1,tag2,tag3]其中标签的数量从0到100不等.此路由的示例控制器,其中action返回tags数组的值.

使用以下编码(请参阅下面的routing.yml和controller.php)我收到错误:

Catchable Fatal Error: Argument 3 passed to Symfony\Component\Routing\Route::__construct() must be of the type array, string given, called in C:\Bitnami\wampstack-5.5.30-0\sym_prog\dctr\vendor\symfony\symfony\src\Symfony\Component\Routing\Loader\YamlFileLoader.php on line 147 and defined in C:\Bitnami\wampstack-5.5.30-0\sym_prog\dctr\app/config\routing.yml (which is being imported from "C:\Bitnami\wampstack-5.5.30-0\sym_prog\dctr\app/config/routing_dev.yml").
Run Code Online (Sandbox Code Playgroud)

网址:

http://localhost:8000/blog/post/tag1
http://localhost:8000/blog/post/tag1/tag2/tag3/tag4
http://localhost:8000/blog/post/?tags=[tag1,tag2]
Run Code Online (Sandbox Code Playgroud)

下面是我到目前为止尝试过的路由和控制器文件的不同组合:

//版本r1,routing.yml

blog_post_tags:
    path: blog/post/{tags}
    defaults: { _controller: DefaultController:list_postsByTagActionQ }
    requirements:
        tags : "[a-zA-Z0-9,]+"
Run Code Online (Sandbox Code Playgroud)

//版本r2,routing.yml

blog_post_tags:
    resource: "@BlogBundle/Controller/"
    type:     annotation
    prefix:   /blog/
    defaults: { _controller: DefaultController:list_postsByTagActionQ } 
Run Code Online (Sandbox Code Playgroud)

//版本r1,2-c1,controller.php

//http://localhost:8000/blog/post/?tags=[tag1,tag2] .
/**
 * @Route("/posts/{tags}")
 * @Template() …
Run Code Online (Sandbox Code Playgroud)

routes symfony

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

标签 统计

symfony ×2

annotations ×1

php ×1

routes ×1

validation ×1