将价值传递给形式

时间:2017-11-16 18:45:33

标签: zend-framework zend-form zend-framework3

我不太确定这样做的方式。 挑战: 我调用一个显示表单的addAction。调用addAction的重点是给出两个路由参数,比如value1和值2用“ - ”分隔。 我需要值1和值2来搜索表中的pk,该表将由addAction保存为外键值。我把两个值都给它一个方法并得到我需要的密钥,到目前为止已经过测试和确定。

我的问题。 在addAction的第一次调用中,我获取路由参数并找到密钥。但事后当然忘记了。我怎么能记住找到的值,以便我可以将它用于我的saveModel方法?

最好的方法是什么? 想法1: 我可以将其提供给表单并将其设置为隐藏密钥字段的值吗? 例如:

class PadForm extends Form
{
public function __construct($name = null, $unitpartid)
        {

            parent::__construct('pad');



        $this->add([
                'name' => 'UnitPartPadID',
                'type' => 'hidden',
                'value' => $unitpartid,
        ]);

这会起作用吗?这会是一种被接受的正确方式吗?

创意2: 或者我会尝试在我的控制器类中使用实例变量,例如$this->smtg;

在这两种情况下,我都会得到一个可以理解的错误

  

尝试获取非对象的属性

问题:

最好的方法是什么? 和 怎么做,也许有人可以举一个简短的例子。

编辑: 我真的很想知道最好的方法。我现在尝试给我的表单一个变量,然后填写一些字段,但这不起作用。

Controlleraction的一部分 (如果我为相关字段设置了一个常量值,则该操作有效)

$parameter = $this->params()->fromRoute('id');
            //      echo $parameter;
                    $partnumber =substr($parameter,0,strpos($parameter,"-"));
           //       echo $partnumber;
                    $unitid=substr($parameter, strpos($parameter,"-")+1, strlen($parameter));
           //       echo $unitid;
                    $test=$this->unitparttable->getUnitPartID($unitid, $partnumber);
                    echo $test->UnitPartID;

                    $form = new PadForm(NULL, $test->UnitPartID);

然后在Formclass中:

 public function __construct($name = null, $unitpartid)
    {
        // We will ignore the name provided to the constructor
        parent::__construct('pad');
    //  $this->db=$db;


        $this->add([
            'name' => 'UnitPartPadID',
            'type' => 'hidden',           //hidden

        ]);


        $this->add([
                'name' => 'UnitPartID',
                'type' => 'text',           //hidden
                'value' => $unitpartid,
        ]);

现在的问题是,如何使用构造函数中给出的$ unitpartid值填充表单域UnitPartID。 我也尝试了$ form-> populate,但它不知道,我之前在ZEND1中使用过它,但可能它不再存在了。

任何帮助表示赞赏!

0 个答案:

没有答案