【发布时间】:2017-02-20 11:33:25
【问题描述】:
我有两 (2) 个课程:
人物模型类
<?php
class Person extends BaseDto
{
/**
* @var array|PostalAddress
*/
protected $postalAddresses = array();
/**
* @param array|PostalAddress $postalAddresses
*/
public function setPostalAddresses($postalAddresses)
{
$this->postalAddresses = $postalAddresses;
}
/**
* @return array|PostalAddress[]
*/
public function getPostalAddresses()
{
return $this->postalAddresses;
}
}
PostalAddress 模型类
<?php
class PostalAddress
{
/**
* @var string $privatePersonFirstName
*/
protected $privatePersonFirstName;
/**
* @var string $privatePersonName
*/
protected $privatePersonName;
/**
* @return string
*/
public function getPrivatePersonFirstName()
{
return $this->privatePersonFirstName;
}
/**
* @param string $privatePersonFirstName
*/
public function setPrivatePersonFirstName($privatePersonFirstName)
{
$this->privatePersonFirstName = $privatePersonFirstName;
}
/**
* @return string
*/
public function getPrivatePersonName()
{
return $this->privatePersonName;
}
/**
* @param string $privatePersonName
*/
public function setPrivatePersonName($privatePersonName)
{
$this->privatePersonName = $privatePersonName;
}
}
在控制器 PostalAddressConroller 中,我有一个操作,它创建表单来编辑单个地址。
我想让某些字段仅在满足某些条件时才可编辑。示例:地址上的组织字段仅在人员为私人类型且地址为雇主类型的情况下才可编辑。
为了实现这样的条件检查,我想在PostalAddress 模型上创建一个方法。但为此,它需要有一个对控制器内部父对象的引用。
我想避免将所有逻辑都放在模板中,以保持模板简洁易懂。
extbase 级别是否支持此类反向引用?
如果我必须自己实现这样的反向引用:我如何防止一般的循环引用(例如对象序列化)?
【问题讨论】:
-
我会以不同的方式处理这个问题。这不是控制器工作恕我直言。这绝对是一个模板的工作。我会使用模板中的 if 条件来显示正确的布局(字段是否可编辑)。之后,您必须确保没有人可以通过例如开发人员工具使字段可编辑。 IE。
if($model->isAllowedProperty) { AddFieldToResultArrOrSimilar } -
我同意 Xatenev 的观点。这属于模板中的区别所在。
-
@Xatenev 你能创建一个答案吗?
-
@AdrianDymorz 做到了。感谢您通知我(很老的问题)。如果您仍然需要任何帮助,请随时评论我的答案。