我不太确定这样做的方式。 挑战: 我调用一个显示表单的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中使用过它,但可能它不再存在了。
任何帮助表示赞赏!