首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Zend\Db\Adapter\Adapter \Adapter实例插入到我的表单模型中存在问题

将Zend\Db\Adapter\Adapter \Adapter实例插入到我的表单模型中存在问题
EN

Stack Overflow用户
提问于 2014-05-02 18:57:45
回答 2查看 1.3K关注 0票数 0

我遵循这个教程,它解释了一些方法(我正在做他列出的第一个方法),我遇到了一些麻烦。

我的表单有Zend\ form \Element\Select填充来自DB的值。按照我的教程,这是我的控制器:

代码语言:javascript
复制
...
//So form can pull select list options from DB
$dbAdapter = $this->getServiceLocator()->get('Zend\Db\Adapter\Adapter');
var_dump($dbAdapter); //debug
$form = new UpdateForm($dbAdapter);
...

在我的模型中:

代码语言:javascript
复制
...
use Zend\Db\Adapter\AdapterInterface;

class UpdateTicketForm extends Form {
    protected $dbAdapter;

    protected function setDbAdapter(AdapterInterface $dbAdapter) {
        $this->dbAdapter = $dbAdapter;
        return $this;
    }

    protected function getDbAdapter() {
        return $this->dbAdapter;
    }

    public function __construct($name = null,AdapterInterface $dbAdapter) {
        $this->setDbAdapter($dbAdapter);
        parent::__construct('updateForm');
...

当我运行它时,我可以看到转储到屏幕上的$dbAdapter看起来是有效的,但是我仍然得到一个错误:

代码语言:javascript
复制
object(Zend\Db\Adapter\Adapter)#267 (5) { ["driver":protected]=> object(Zend\Db\Adapter\Driver\Pdo\Pdo)#268 (4) { [...

Catchable fatal error: Argument 2 passed to MyModule\Form\UpdateForm::__construct() must implement interface Zend\Db\Adapter\AdapterInterface, none given, called in ...Controller\MyController.php on line 73 and defined in ...\Form\UpdateForm.php on line 20

编写本教程的人还发布了他的来源,我看了之后,仍然无法确定我的代码的问题(对应于他代码中的“form-db-适配器”方法)。

造成这一问题的原因是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-02 19:08:51

UpdateForm的构造器需要两个参数$name和$adapter,如下所示。

代码语言:javascript
复制
public function __construct($name = null, AdapterInterface $dbAdapter) {

}

因此,在创建UpdateForm()实例时,应该传递两个参数,如下所示。

代码语言:javascript
复制
$form = new UpdateForm('formName', $dbAdapter);

如果您只想传递$dbAdapter作为参数,请将UpdateForm的构造函数更改为此。

代码语言:javascript
复制
public function __construct(AdapterInterface $dbAdapter, $name = null) {

}
票数 1
EN

Stack Overflow用户

发布于 2014-05-02 19:05:29

您的表单期望DBAdapter作为第二个参数,第一个参数是表单名称。尝试以下几点:

代码语言:javascript
复制
$form = new UpdateForm('myform', $dbAdapter);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23435117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档