在Phalcon中创建新表单元素时出错

时间:2014-11-16 12:49:16

标签: php phalcon

尝试创建新表单元素时出现此错误:

  

Phalcon \ Forms \ FileUpload :: render()的声明必须与Phalcon \ Forms \ ElementInterface :: render()

的声明兼容

这是我的代码:

namespace Phalcon\Forms;

class FileUpload extends Element implements ElementInterface
{
    public function  __construct(string $name, $options, array $attributes)
    {

    }

    public function render(array $attributes)
    {
        return 'my form element html'; 
    }
}

此时我尝试了各种不同的参数表示法,但我仍然收到相同的错误。

所以我想知道是否有可能在Phalcon中创建这样的表单元素,或者它只是我在文档中遗漏的东西。

http://phalcon.agent-j.ru/en/1.3.0/Phalcon/Forms/Element/
http://docs.phalconphp.com/en/latest/api/Phalcon_Forms_ElementInterface.html

我使用的是版本1.3.2

2 个答案:

答案 0 :(得分:1)

在phalcon文档中定义了这个protoytype:

abstract public string render (array $attributes=?);

所以我把我的代码更改为:

public function render($attributes = false)
{
    return 'my form element html'; 
}

我只是不熟悉=?符号

答案 1 :(得分:0)

你正在使用Phalcon 2吗?!在这个版本中,应该更严格地遵循签名。当我切换到Phalcon 2时,我也遇到了一堆像这样的错误,但幸好这个版本是Zephir编写的,它使源代码更容易阅读。

正如您在ElementInterface定义中所看到的,签名尚不太一致但我们可以很容易地看到render()只有一个参数而没有array类型提示。只需从接口实现中删除array类型即可匹配当前签名。